EF6通过另一个实体映射实体



我有分配给角色和角色的用户,这些用户分配给特定的系统活动:

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.RolesRole.Activities绑定。

当然,我可以在代码中进行:

user.Activities = user.Roles
    .SelectMany(role => role.Activities)
    .Select(act => act.Id)
    .Distinct()
    .ToArray();

,但是使用EF6?

本来可以

实体框架用于表示和访问域模型。域模型是组成整个模型的实体的逻辑结构。因此,没有EF没有提供良好的机制。

在域对象上使用诸如存储库模式之类的东西更有意义,并且存储库可能具有一个可以包含统一活动的活动属性的用户。或者,存储库可以公开一种方法,该方法返回给定用户ID的所有活动。

相关内容

  • 没有找到相关文章

最新更新