2009-10-24 2 views
2

Я получаю ошибку отображения в Fluent NHibernate. Почему он все еще ищет _id, когда я явно указал столбец?Ошибка отображения NHibernate (столбец идентификатора)

Invalid column name 'Account_id'. 
[GenericADOException: could not initialize a collection: [ProtoStack.Business.Entities.Account.LedgerEntries#1][SQL: SELECT ***ledgerentr0_.Account_id*** as Account5_1_, ledgerentr0_.Id as Id1_, ledgerentr0_.Id as Id43_0_, ledgerentr0_.LedgerEntryDate as LedgerEn2_43_0_, ledgerentr0_.Amount as Amount43_0_, ledgerentr0_.AccountId as AccountId43_0_ FROM dbo.LedgerEntry ledgerentr0_ WHERE ledgerentr0_.Account_id=?]] 

Я прямо указал, что столбец «AccountId».

public class AccountMap : ClassMap<Account> 
{ 
    public AccountMap() 
    { 
     Table("dbo.Account"); 
     Id(x => x.Id) 
      .Column("Id"); 
     Map(x => x.Code); 
     Map(x => x.Name); 
     Map(x => x.Description); 
     Map(x => x.Category); 
     References(x => x.Group) 
      .Column("AccountGroupId"); 
     HasMany(x => x.LedgerEntries) 
      .Inverse() 
      .Cascade.All(); 
    } 
} 

public class LedgerEntryMap : ClassMap<LedgerEntry> 
{ 
    public LedgerEntryMap() 
    { 
     Table("dbo.LedgerEntry"); 
     Id(x => x.Id) 
      .Column("Id"); 
     References(x => x.Account) 
      .Column("AccountId"); 
     Map(x => x.LedgerEntryDate); 
     Map(x => x.Amount); 
    } 
} 

Я что-то не хватает?

ответ

5

Мой плохой. Мне не хватало KeyColumn.

public class AccountMap : ClassMap<Account> 
{ 
    public AccountMap() 
    { 
     Table("dbo.Account"); 
     Id(x => x.Id) 
      .Column("Id"); 
     Map(x => x.Code); 
     Map(x => x.Name); 
     Map(x => x.Description); 
     Map(x => x.Category); 
     References(x => x.Group) 
      .Column("AccountGroupId"); 
     HasMany(x => x.LedgerEntries) 
      .KeyColumn("AccountId") 
      .Inverse() 
      .Cascade.All(); 
    } 
} 

Работы сейчас.

+0

Я получил эту ошибку, и я также забыл добавить KeyColumn, но я не получил ошибку до запуска моего приложения. Я написал некоторые очень специфические модульные тесты, которые были сохранены и удалены в БД, и эти тесты * все еще прошли * без указания KeyColumn. Я не знаю, кто виноват в этом – PandaWood

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