5

類似的問題:Mapping collection of strings with Entity Framework or Linq to SQL映射值類型的集合中實體框架

我有一個角色類:

public class Role 
{ 
    public int RoleID { get; set; } 
    public virtual IList<string> Actions { get; set; } 
} 

我有一個映射表在db,「RoleActionMapping」同列,「角色ID 「和」行動「。 「RoleID」是角色表的外鍵,「Action」是一個varchar。我似乎無法設置我的EF映射來使用RoleAction填充Role類。

有關如何實現此目的的任何想法?謝謝!

回答

3

EF不提供這種映射。

如果要映射它,你必須使用:

public class Role 
{ 
    public int RoleID { get; set;} 
    public virtual IList<RoleAction> Actions { get; set; } // you should initialize collection 
} 

public class RoleAction 
{ 
    public int ActionId { get; set; } // PK must be defined or entity is readonly 
    public string Action { get; set; } 
    public virtual Role { get; set; } 
} 

可以進一步擴展Role類provied沒有映射的財產返還IEnumerable<string>這將在內部選擇數據從Actions財產。

但是,一旦你遵循這種方法,你應該考慮將它建模爲RoleAction實體之間的M:N關係。

+0

太糟糕了,我希望它做到了。感謝您的解決方案。 – manu08 2011-03-03 20:41:15

+0

@ manu08有關*爲什麼*「值對象集合」的觀點可能不提供,請參閱http://mhinze.com/2009/01/10/there-is-never-a-collection-of-value-對象/(這是一般的域驅動設計術語,而不是實體框架特定的)。 – Nathan 2014-05-05 15:49:58