我的用户被分配到分配给特定系统活动的角色和角色:
public class User
{
public long Id { get; set; }
public ICollection<Role> Roles { get; set; }
// I want this:
public ICollection<Activity> Activities { get; set; }
// or even better this:
public ICollection<ActivityCode> Activities { get; set; }
}
public class Role
{
public long Id { get; set; }
public ICollection<Activity> Activities { get; set; }
}
public class Activity
{
public ActivityCode Id { get; set; }
}
我希望能够直接使用用户活动,User.Activities
通过User.Roles
和Role.Activities
进行约束。
当然,我可以在代码中完成:
user.Activities = user.Roles
.SelectMany(role => role.Activities)
.Select(act => act.Id)
.Distinct()
.ToArray();
但EF6原生可能吗?
答案 0 :(得分:0)
实体框架用于表示和访问域模型。域模型是构成整个模型的实体的逻辑结构。因此没有EF提供这样做的好机制。
在域对象上使用类似于存储库模式的东西更有意义,并且该存储库可能具有UserDTO,该UserDTO可以具有包含统一活动的activities属性。或者,存储库可以公开一个方法,该方法返回给定UserId的所有活动。