2010-08-15 2 views
0

Я получаю следующее сообщение об ошибке с помощью Свободный:Свободно NHibernate Отображение ошибки

12: 16: 47879 ОШИБКА [7] конфигурации [(NULL)] - Объединение из таблицы Адрес относится к некартированный класс: 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 - Non identity PK и PersonId non identity FK

ответ

9

У вас должно быть свойство Person типа Person, а не идентификатор.

предложил прочитать: https://github.com/jagregory/fluent-nhibernate/wiki/Getting-started

+0

как в ссылках (х => TypeOf (Person)) Колонка ("PersonId") Not.Nullable()..? – Shane

+1

ОК, толстый получил его, Ссылки (x => x.Person) – Shane

+0

Это правильно. –