为什么FluentNhibernate返回现有行的NullReference?

| 我没有从该设置中得到任何对象
table SPEC (
  Special_Name varchar2 pk
  Signal integer
  Created_At date)

namespace App
{
    public class Strategy
    {
        public virtual string Id { get; private set; }
        public virtual int Signal { get; set; }
        public virtual DateTime CreatedAt { get; set; }
    }

    public class StrategyMap : ClassMap<Strategy>
    {
        public StrategyMap()
        {
            this.Table(\"SPEC\");
            this.Id(x => x.Id).Column(\"Special_Name\");
            Map(x => x.Signal).Column(\"Signal\");
            Map(x => x.CreatedAt).Column(\"Created_At\");
        }
    }
}

namespace App.Tests
{
    public class StrategyMapTest
    {
        private ISessionFactory sessionFactory;

        public StrategyMapTest()
        {
            this.sessionFactory = this.CreateSessionFactory();
        }

        [Fact]
        public void Can_read_from_database()
        {
            using (var session = this.sessionFactory.OpenSession())
            {
                var fromDb = session.Get<Strategy>(\"Foo 1\");
                Assert.Equal(\"Foo 1\", fromDb.Id);
                Assert.Equal(\"1\", fromDb.Signal);
                Assert.Equal(new DateTime(2011,1,1), fromDb.CreatedAt);
            }
        }

        private ISessionFactory CreateSessionFactory()
        {
            return Fluently.Configure()
                .Database(OracleClientConfiguration
                    .Oracle10
                    .ConnectionString(\"connString\"))
                .Mappings(m => m.FluentMappings
                    .AddFromAssemblyOf<Strategy>()
                    .ExportTo(@\"C:\\logs\"))
                .BuildSessionFactory();
        }
    }
}
我在第一个断言中遇到了异常。从数据库中没有检索到对象-它存在。
System.NullReferenceException: Object reference not set to an instance of an object.
我导出的映射如下所示
<hibernate-mapping xmlns=\"urn:nhibernate-mapping-2.2\">
  <class xmlns=\"urn:nhibernate-mapping-2.2\" name=\"App.Strategy, App, Version=1.0.0.0, Culture=neutral, PublicKeyToken=0af8b89e104ed570\" table=\"SPEC\">
    <id access=\"backfield\" name=\"Id\" type=\"System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">
      <column name=\"Special_Name\" />
      <generator class=\"assigned\" />
    </id>
    <property name=\"Signal\" type=\"System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">
      <column name=\"Signal\" />
    </property>
    <property name=\"CreatedAt\" type=\"System.DateTime, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\">
      <column name=\"Created_At\" />
    </property>
  </class>
</hibernate-mapping>
    
已邀请:
您是否检查了是否有任何SQL查询发送到数据库?您可以看到,要么在数据库上使用探查器,要么最好的方法是使用Nhibernate探查器(商业的,但是有免费试用版) 如果没有发送SQL,则说明您的配置存在一些问题(乍一看似乎没问题) 如果确实看到发送了SQL查询,则可能会通过查看它知道问题所在     

要回复问题请先登录注册