在Entity Framework中映射值类型集合

man*_*u08 6 orm entity-relationship entity-framework entity-framework-4

类似的问题:使用Entity Framework或Linq to SQL将字符串集合映射

我有一个角色类:

public class Role
{
    public int RoleID { get; set; }
    public virtual IList<string> Actions { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我在db中有一个映射表,"RoleActionMapping"包含列,"RoleID"和"Action"."RoleID"是Role表的外键,"Action"是varchar.我似乎无法设置我的EF映射以使用RoleActions填充Role类.

关于如何实现这一点的任何想法?谢谢!

Lad*_*nka 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; }
}
Run Code Online (Sandbox Code Playgroud)

您可以进一步扩展Role类以提供未映射的属性返回,这将在内部从属性IEnumerable<string>中选择数据。Actions

但是一旦您遵循这种方法,您应该考虑将其建模为实体之间的 M:NRole关系Action