C# 自引用表实体框架插入记录?

C# 自引用表实体框架插入记录?,c#,entity-framework-4,C#,Entity Framework 4,无法确定从属操作的有效顺序。依赖关系可能由于外键约束、模型要求或存储生成的值而存在。 ASP.NET MVC3实体框架4.1 我的模型 public class OrganizationStructure { public OrganizationStructure() { this.OrganizationStructures = new List<OrganizationStructure>(); InputDate = Date

无法确定从属操作的有效顺序。依赖关系可能由于外键约束、模型要求或存储生成的值而存在。

ASP.NET MVC3实体框架4.1

我的模型

public class OrganizationStructure
{
    public OrganizationStructure()
    {
        this.OrganizationStructures = new List<OrganizationStructure>();

        InputDate = DateTime.Now;
    }

    public int ID { get; set; }
    public string Name { get; set; }

    public int OrganizationStructureID { get; set; }
    public int OrganizationID { get; set; }
    public int OrganizationTypeID { get; set; }
    public int OrganizationActivityID { get; set; }
    public int OrganizationLocationID { get; set; }

    public string AddRemark { get; set; }
    public int UserId { get; set; }
    public DateTime InputDate { get; set; }
    public int? RemAttr { get; set; }

    public IList<OrganizationStructure> OrganizationStructures { get; private set; }

}

OrganizationStructureID
属性必须为空,否则将无法插入具有自动递增主键的记录

即使您有
OrganizationStructureID
nullable,EF也无法处理循环关系。您需要分两步保存它

using (var scope = new TransactionScope())
{
     var context = new MyContext();
     var organizationStructure = new OrganizationStructure {/* assign props */ };
     context.OrganizationStructures.Add(organizationStructure);

     context.SaveChanges(); // step 1

     organizationStructure.OrganizationStructures.Add(organizationStructure);

     context.SaveChanges(); // step 2

     scope.Complete();
}

OrganizationStructureID
属性必须为空,否则将无法插入具有自动递增主键的记录

即使您有
OrganizationStructureID
nullable,EF也无法处理循环关系。您需要分两步保存它

using (var scope = new TransactionScope())
{
     var context = new MyContext();
     var organizationStructure = new OrganizationStructure {/* assign props */ };
     context.OrganizationStructures.Add(organizationStructure);

     context.SaveChanges(); // step 1

     organizationStructure.OrganizationStructures.Add(organizationStructure);

     context.SaveChanges(); // step 2

     scope.Complete();
}

我更新了问题。CreateOrUpdateOrganizationStructure handlerI更新了问题。CreateOrUpdateOrganizationStructure Handler这不是非常有用的更新,因为相关代码可能在该存储库中…这不是非常有用的更新,因为相关代码可能在该存储库中。。。