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