2011-05-31 73 views
1

大家好,我的方案功能NHibernate 3映射覆合場(自定義類型)

public class Permission 
{ 
    public virtual Function Function { get; set; } 
    public virtual Profile Profile { get; set; } 
} 

public class MapPermission : ClassMap<Permission> 
{ 
    public MapPermission() 
    { 
     Table("Permissions".ToUpper()); 
     CompositeId().KeyProperty(x => x.Function, "FunctionID").KeyProperty(x => x.Profile, "ProfileID"); 

    } 
} 

如果功能和簡歷有兩個簡單的映射實體。當我運行我有這個錯誤:

無法確定類型:Data.Model.Entities.Function,Data.Model,版本= 1.0.0.0,文化=中立,公鑰=空,爲列:NHibernate.Mapping .COLUMN(FunctionID)「}

是否有辦法避免這種情況?最終我需要創建一個由兩個自定義映射類製成compositeID一類。如果我使用compositeID用int字段它就像一個魅力

預先感謝

函數(如配置文件)映射

public class Function 
{ 
    public virtual int ID { get; set; } 
    public virtual string Name { get; set; } 
} 

public class MapFunction : ClassMap<Function> 
{ 
    public MapFunction() 
    { 
     Table("FUNCTIONS"); 
     Id(x => x.ID); 
     Map(x => x.Name); 
    } 
} 

回答

6

使用KeyReference,而不是KeyProperty

public class MapPermission : ClassMap<Permission> 
{ 
    public MapPermission() 
    { 
     Table("Permissions".ToUpper()); 
     CompositeId() 
      .KeyReference(x => x.Function, "FunctionID") 
      .KeyReference(x => x.Profile, "ProfileID"); 

    } 
} 
+0

你解決了我的一天。問題 – user756037 2011-05-31 12:16:03

+0

如果這解決了您的問題,請單擊複選標記將其標記爲答案。 – 2011-05-31 12:43:56

+0

找不到答案! – user756037 2011-05-31 14:59:42