在Entity Framework中映射值类型集合

时间:2011-03-03 01:11:22

标签: entity-framework orm entity-framework-4 entity-relationship

类似的问题: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”包含列,“RoleID”和“Action”。 “RoleID”是Role表的外键,“Action”是varchar。我似乎无法设置我的EF映射以使用RoleActions填充Role类。

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

1 个答案:

答案 0 :(得分: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类,以提供返回IEnumerable<string>的未映射属性,该属性将在内部从Actions属性中选择数据。

但是一旦你采用这种方法,你应该考虑将它建模为RoleAction实体之间的M:N关系。