2010-08-15 200 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