【问题标题】:Entity Framework with Poco and navigation properties具有 Poco 和导航属性的实体框架
【发布时间】:2013-10-28 18:36:54
【问题描述】:

我正在使用带有实体框架的 Poco 生成器, 并且Poco Proxy类已经生成成功,

对于一张桌子,一切都很好,

在这里,我列出了我的课程的主要部分并解释了表之间的关系。 有 3 个表,它们有如下多对多关系:

1- 权威 2- 能力 3- 权威地图

每个权威可以有许多能力,反之亦然。 主要问题是权限类中的导航属性不起作用。

Authority 类是(只是列出的类的一部分):

 public partial class Authority 
{
    .
    .
    .
    public virtual ICollection<AuthorityAbilityMap> AuthorityAbilityMaps
    {
        //Poco implementation 
    }
    private ICollection<AuthorityAbilityMap> _authorityAbilityMaps;
    .
    .
    .
}

以及能力等级:

 public partial class Ability : IAuditable
{
   .
   .
   .      
    public virtual ICollection<AuthorityAbilityMap> AuthorityAbilityMaps
    {
        //Poco implementation contains get and set.
    }
    private ICollection<AuthorityAbilityMap> _authorityAbilityMaps;
}

和 AuthorityAbilityMaps 导航属性:

 public virtual Ability Ability
    {
        get { return _ability; }
        set
        {
            if (!ReferenceEquals(_ability, value))
            {
                var previousValue = _ability;
                _ability = value;
                FixupAbility(previousValue);
            }
        }
    }
    private Ability _ability;
    public virtual Authority Authority
    {
        get { return _authority; }
        set
        {
            if (!ReferenceEquals(_authority, value))
            {
                var previousValue = _authority;
                _authority = value;
                FixupAuthority(previousValue);
            }
        }
    }

针对上述类测试的源代码如下:

AuthorityEntities authorityContext = new AuthorityEntities();
                Authority authority = authorityContext.Authorities.Where(x => x.AID == 85).FirstOrDefault();
                ICollection<AuthorityAbilityMap> allMaped = authority.AuthorityAbilityMaps;

allMaped 包含 0 个成员。

如您所知,导航属性将由 Poco Generator 创建,

事实上,我想使用这些导航属性来加载所有关系型记录和 为特定权限批量提供多种能力。

提前致谢。

【问题讨论】:

  • 您唯一的问题描述是“授权类中的导航属性不起作用”。这不是很精确。 “不起作用”是什么意思?
  • 谢谢!,allMaped 没有任何成员,我可以为每个权限加载所有相关的能力并保存特定权限的能力集合吗?
  • 是的。您不需要多对多映射实体。您可以在其他两个实体之间使用集合。只需谷歌搜索多对多示例。

标签: entity-framework-4 code-generation poco t4


【解决方案1】:

我定义了Authority的主键和Ability的主键为主键 对于 AuthorityAbilityMap 并且效果很好, 它们已被用作 AuthorityAbilityMap 中的外键。

【讨论】:

    猜你喜欢
    • 2011-04-19
    • 1970-01-01
    • 2012-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多