具有Poco和导航属性的实体框架

时间:2013-10-20 06:50:58

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

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

对于单个表格,所有事情都很顺利,

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

1-权限2-能力3- AuthorityAbilityMap

每个权威都可以有很多能力和反对。 主要问题是Authority类中的Navigation属性不起作用。

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创建,

实际上我想使用这些导航属性来加载所有关系记录和 为特定的权威机构提供批量的多种能力。

提前致谢。

1 个答案:

答案 0 :(得分:0)

我将Authority的主键和Ability的主键定义为主键 对于AuthorityAbilityMap,它运作良好, 它们已被用作AuthorityAbilityMap中的外键。