0

나는 내가 처음 어설에서 예외가이 설정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. 

내 수출 매핑은 모든 SQL 쿼리가 데이터베이스로 전송되는 경우 확인이 되었습니까

<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> 

답변

1

처럼 보인다? 당신은 데이터베이스에서 프로파일 러를 사용하거나 가장 좋은 방법은 Nhibernate Profiler (상용이지만 무료 평가판이 있음)을 사용하는 것입니다.

SQL이 전송되지 않으면 구성에 약간의 문제가 있음을 알 수 있습니다. 괜찮아 보인다) 보낸 SQL 쿼리를 볼 경우, 당신은 아마도 당신의 문제가 무엇인지 알 것입니다.

+0

테이블에 데이터가 포함되어 있으면 쿼리가 작동합니다. 어쨌든 그것은 어제부터 삭제되었습니다. .Oracle10.ShowSql(). ConnectionString ("connString") 메서드를 사용하여 xunit GUI 러너를 통해 출력을 살펴 보았습니다. – mrt181

관련 문제