2009-12-01 47 views
5

我收到此錯誤:NHibernate的映射例外:從表中dbo.AccountGroup的關聯是指未映射類:System.String

從表dbo.AccountGroup是指未映射類的關聯:系統。字符串

這是我的實體:

public class AccountGroup 
{ 
    public virtual int Id { get; private set; } 
    public virtual string Name { get; set; } 
    public virtual string Parent { get; set; } 
    public virtual string Description { get; set; } 
    public virtual IList<Account> Accounts { get; set; } 

    public AccountGroup() 
    { 
     this.Accounts = new List<Account>(); 
    } 
} 

public class Account 
{ 
    public virtual int Id { get; private set; } 
    public virtual string Code { get; set; } 
    public virtual string Name { get; set; } 
    public virtual string Description { get; set; } 
    public virtual int Category { get; set; } 
    public virtual AccountGroup Group { get; set; } 
    public virtual IList<LedgerEntry> LedgerEntries { get; set; } 

    public Account() 
    { 
     this.LedgerEntries = new List<LedgerEntry>(); 
    } 
} 

這是我的映射:

public AccountGroupMap() 
    { 
     Table("dbo.AccountGroup"); 
     Id(x => x.Id) 
      .Column("Id"); 
     Map(x => x.Name); 
     References(x => x.Parent) 
      .Column("Parent"); 
     Map(x => x.Description); 
     HasMany(x => x.Accounts) 
      .KeyColumn("GroupId") 
      .Inverse() 
      .Cascade.All(); 
    } 
} 

    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(); 
    } 

這裏是我的表:

CREATE TABLE AccountGroup ( ID INT PRIMARY KEY, 名稱爲varchar(20), 家長INT, 說明VARCHAR(20) )

CREATE TABLE帳戶 ( ID INT PRIMARY KEY, 代碼VARCHAR(30), 名稱VARCHAR(20), 說明VARCHAR(20), 類別INT, AccountGroupId INT, 外鍵(AccountGroupId)參考文獻AccountGroup(Id)的 )

回答

14

你有

References(x => x.Parent) 
     .Column("Parent"); 

當家長被定義爲

public virtual string Parent { get; set; } 

不能引用一個字符串(除非它是一個集合元素)

+0

謝謝...我有完全相同的問題。希望我可以多次投票:) –