类似的问题: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类。
关于如何实现这一目标的任何想法?谢谢!
答案 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
属性中选择数据。
但是一旦你采用这种方法,你应该考虑将它建模为Role
和Action
实体之间的M:N关系。