我对Entity框架很陌生,我正在为这个简单的结构建模:
使用此模型,我所拥有的是具有属性UsersGroups(UserGroups对象的集合)的Users类。
我希望有一个Users类,其属性类似于类型为Tuple的Group或类似的东西(一个新的PriorizedGroup类等),它与bussines更相关。
这是否可以使用Entity框架?
提前致谢。
编辑:如果我对bussines对象进行建模,我会创建一个User类,其中包含一个Groups属性,该属性包含用户所属的所有组,并带有一个额外的属性来存储其优先级(带有一个元组,带有一个继承的类,就像你一样希望)。问题是我觉得Entity框架创建的对象类似于SQL结构,而不是业务结构。答案 0 :(得分:1)
不直接。 EF只能以您目前看到的方式映射关系,但您可以将自定义行为添加到实体的部分部分。简单的方法就像
public partial class Users
{
public IEnumerable<PrioritizedGroup> Groups
{
get
{
return UserGroups.Select(ug => new PrioritizedGroup
{
Priority = ug.Priority,
Id = ug.Group.Id,
Name = ug.Group.Name,
Description = ug.Group.Description
})
.OrderBy(g => g.Priority);
}
}
}
要直接在EF中实现这一点,您需要一些高级映射技术,这需要您直接修改EDMX源代码(DefiningQuery或QueryView),它将使实体只读(您需要存储过程进行修改)。
要在可更新的用户上公开集合,您可能需要使用ObservableCollection
并将ObservableCollection
触发的所有修改转移回原始UserGroups
集合。一旦你有类似的东西实现you can hide original collection。