2009-08-16 4 views
2

Хорошо, так у меня есть две таблицы:Fluent NHibernate, stuggling с один-ко-многим

Companies 
    | id int 
    | name varchar(50) 

и

Contacts 
    | id int 
    | name varchar(50) 
    | companyID int 

В моем коде у меня есть следующие классы

public class Company 
{ 
    public int Identity { get; set; } 
    public string Name { get; set; } 
    public IList<Contact> Contacts { get; set; } 
} 

и

public class Contact 
{ 
    public int Identity { get; set; } 
    public string Name { get; set; } 
    public Company Company { get; set; } 
} 

И мои беглые отображения NHibernate, как так:

public class CompanyMapping : ClassMap<Company> 
{ 
    public CompanyMapping() 
    { 
     WithTable("Companies"); 

     Id(x => x.Identity, "Id"); 
     Map(x => x.Name);    
     HasMany<Contact>(x => x.Contacts)             
      .Inverse()     
      .LazyLoad()     
      .Cascade.All() 
      .AsList();     
    } 
} 

и

public class ContactMapping : ClassMap<Contact> 
{ 
    public ContactMapping() 
    { 
     WithTable("Contacts"); 

     Id(x => x.Identity, "Id"); 
     References<Company>(x => x.Company, "CompanyID"); 
     Map(x => x.Name); 
    } 
} 

Но когда я пытаюсь получить доступ к свойству Company.Contacts я получаю следующую ошибку

Invalid column name 'Company_id'. 
Invalid column name 'Company_id'. 

(да два раза в одном сообщении)

очевидно, что ключевой столбец в таблице контактов не называется Company_id, он называется CompanyID

Так что я делаю неправильно? Я не могу показать, что ключевой столбец, как WithKeyColumn, кажется, не существует (это то, что я нашел в других решениях, которые сделали люди, но они могут использовать для меня другую версию свободного nhibernate)

заранее спасибо

ответ

4

Fluent NHibernate - HasMany().WithKeyColumnName

решил это :)

Edit:

Видимо, потому что я принял свой ответ на другой вопрос сегодня, я должен ждать еще два дня делать так.

Этот вид отстой, но meh.

Смежные вопросы