本来可以
我有分配给角色和角色的用户,这些用户分配给特定的系统活动:
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?
实体框架用于表示和访问域模型。域模型是组成整个模型的实体的逻辑结构。因此,没有EF没有提供良好的机制。
在域对象上使用诸如存储库模式之类的东西更有意义,并且存储库可能具有一个可以包含统一活动的活动属性的用户。或者,存储库可以公开一种方法,该方法返回给定用户ID的所有活动。