【问题标题】:EF6 map entity through another entityEF6 通过另一个实体映射实体
【发布时间】:2017-09-23 05:00:51
【问题描述】:

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

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

当然,我可以在代码中做到这一点:

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

但是 EF6 是否可以在本地实现?

【问题讨论】:

    标签: entity-framework entity-framework-6 model-associations


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-15
      • 2015-05-31
      • 1970-01-01
      • 2013-12-24
      • 2011-12-17
      • 1970-01-01
      • 2011-07-18
      相关资源
      最近更新 更多