【问题标题】:Entity framework 4.1 tree mapping实体框架 4.1 树映射
【发布时间】:2011-08-30 08:19:34
【问题描述】:

我在将经典数据库树映射到实体框架实体时遇到问题。

这是我的数据库:

CREATE TABLE intranet_organization_units
(
 [OrganizationUnitId] INT IDENTITY PRIMARY KEY,
 [ParentOrganizationUnitId] INT NULL,
 [Name] NVARCHAR(50) NOT NULL
)

实体:

public class OrganizationUnit
{
    public int OrganizationUnitId { get; set; }
    public string Name { get; set; }
    public int? ParentOrganizationUnitId { get; set; }

    public virtual OrganizationUnit ParentOrganizationUnit { get; set; }
    public virtual ICollection<OrganizationUnit> ChildrenUnits { get; set; } 
}

最后是映射:

   public class OrganizationUnitMapper : EntityTypeConfiguration<OrganizationUnit>
    {
        public OrganizationUnitMapper()
        {
            ToTable("intranet_organization_units");
            Property(x => x.Name).HasColumnName("Name").IsRequired();


            HasMany(x => x.ChildrenUnits).WithOptional().HasForeignKey(x => x.OrganizationUnitId);
            HasOptional(x => x.ParentOrganizationUnit).WithMany().HasForeignKey(x => x.ParentOrganizationUnitId);

        }
    }

当我运行应用程序时,我得到了这个异常:

在模型生成过程中检测到一个或多个验证错误:

System.Data.Edm.EdmAssociationEnd: : 多重性在角色中无效 'OrganizationUnit_ChildrenUnits_Target' 谈恋爱 'OrganizationUnit_ChildrenUnits'。 因为从属角色是指 关键属性,上限 从属角色的多样性 必须是 1。

那么问题出在哪里?谢谢

【问题讨论】:

    标签: asp.net entity-framework mapping entity-framework-4.1


    【解决方案1】:

    使用这个:

    public class OrganizationUnitMapper : EntityTypeConfiguration<OrganizationUnit>
    {
        public OrganizationUnitMapper()
        {
            ToTable("intranet_organization_units");
            Property(x => x.Name).HasColumnName("Name").IsRequired();
    
            this.HasOptional(x => x.ParentOrganizationUnit)
                .WithMany(y => y.ChildrenUnits)
                .HasForeignKey(x => x.ParentOrganizationUnitId);
        }
    }
    

    在定义此关联映射时,您会说:

    • 组织单位有可选的父单位
    • 父母可以有多个孩子
    • 子使用外键属性

    【讨论】:

      猜你喜欢
      • 2012-03-12
      • 2010-10-09
      • 1970-01-01
      • 1970-01-01
      • 2017-02-11
      • 2011-03-09
      • 2014-04-01
      • 2011-05-06
      • 2019-03-27
      相关资源
      最近更新 更多