2010-08-15 203 views
0

我使用流利得到以下錯誤:功能NHibernate映射錯誤

12:16:47879 ERROR [7] 配置[(空)] - 從表地址的關聯 指 未映射的類:System.Int32 NHibernate.MappingException:從表地址 一種 關聯指的是一個未映射類: System.Int32

public class Address { 
     public Address() { 
     } 
     public virtual int AddressId { 
      get; 
      set; 
     } 
     public virtual string AddressLine1 { 
      get; 
      set; 
     } 
     public virtual string AddressLine2 { 
      get; 
      set; 
     } 
     public virtual string AddressLine3 { 
      get; 
      set; 
     } 
     public virtual string BuildingNumber { 
      get; 
      set; 
     } 
     public virtual string City { 
      get; 
      set; 
     } 
     public virtual string County { 
      get; 
      set; 
     } 
     public virtual System.DateTime MovedIn { 
      get; 
      set; 
     } 
     public virtual System.DateTime MovedOut { 
      get; 
      set; 
     } 
     public virtual int PersonId { 
      get; 
      set; 
     } 
     public virtual string PostCode { 
      get; 
      set; 
     } 
    } 

public class AddressMap : ClassMap<Address> { 

     public AddressMap() { 
    Table("Address"); 
    LazyLoad(); 
      Id(x => x.AddressId).GeneratedBy.HiLo("1000"); 
    Map(x => x.AddressLine1).Length(100).Not.Nullable(); 
    Map(x => x.AddressLine2).Length(100).Not.Nullable(); 
    Map(x => x.AddressLine3).Length(100).Not.Nullable(); 
    Map(x => x.BuildingNumber).Length(250).Not.Nullable(); 
    Map(x => x.City).Length(250).Not.Nullable(); 
    Map(x => x.County).Length(250).Not.Nullable(); 
    Map(x => x.MovedIn).Not.Nullable(); 
    Map(x => x.MovedOut).Not.Nullable(); 
    References(x => x.PersonId).Column("PersonId").Not.Nullable(); 
    Map(x => x.PostCode).Length(15).Not.Nullable(); 
     } 
    } 


[TestFixture] 
    public class TestBase 
    { 
     protected SessionSource SessionSource { get; set; } 
     protected ISession Session { get; private set; } 

     [SetUp] 
     public void SetupContext() 
     { 
      var cfg = Fluently.Configure() 
       .Database(MsSqlConfiguration.MsSql2005.ConnectionString(
        "Data Source=localhost;Initial Catalog=ted;User ID=sa;Password=xxxx;")); 
      SessionSource = new SessionSource(cfg.BuildConfiguration()//**Error Here** 
               .Properties, new TestModel()); 
      Session = SessionSource.CreateSession(); 
      SessionSource.BuildSchema(Session); 
     } 
     [TearDown] 
     public void TearDownContext() 
     { 
      Session.Close(); 
      Session.Dispose(); 
     } 
    } 

我在初始配置中遇到了一個錯誤,我已經過了幾次,我真的不確定我究竟做了什麼錯誤?任何人都可以看到任何明顯?我可以確認這個表的數據庫中只有2個int。 AddressId - 非身份PK和PersonId非身份FK

回答

9

您應該擁有Person類型的Person屬性,而不是id。

提出建議的讀:https://github.com/jagregory/fluent-nhibernate/wiki/Getting-started

+0

如在參考文獻(X =>的typeof(人))柱( 「PERSONID」)Not.Nullable()。? – Shane 2010-08-15 12:57:25

+1

確定是厚得到它,參考文獻(x => x.Person) – Shane 2010-08-15 13:14:16

+0

這是正確的。 – 2010-08-15 13:24:13