entity-framework-4 - 这个映射有什么问题吗?

标签 entity-framework-4 entity-framework-4.1 ef-code-first

我想根据下面的类字典创建下表。添加记录时出现异常。这个映射有什么问题吗?如果我将类“B”的子属性指向另一个类(例如“C”),则此代码有效。

database table 
    table A {id, name}
    table B {parentId, childId, Type}

类和映射

Public class A
{
   public int Id {get;set;}
   public string Description {get;set;}
}

Public class B
{
   [Key, Column(Order=0)]
   public int ParentId {get;set;}
   [Foreignkey("ParentId")]
   public A Parent {get;set;}

   [Key, Column(Order=1)]
   public int ChildId {get;set;}
   [Foreignkey("ChildId")]
   public A Child {get;set;}

   [Key, Column(Order=2)]
   public string Type {get;set;}

}

更新

错误消息是:在表“B”上引入 FOREIGN KEY 约束“B_Parent”可能会导致循环或多级联路径。指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约束。 无法创建约束。查看以前的错误。

谢谢

阿什拉夫

最佳答案

阅读以下帖子后,我找到了解决方案。 http://weblogs.asp.net/manavi/archive/2011/05/01/associations-in-ef-4-1-code-first-part-5-one-to-one-foreign-key-associations.aspx

Entity Framework Code First - Defining Relationships/Keys

这是 SQL Server 错误。 “A”类在“B”类中引用两次。 Code First 尝试为类“B”中的父列和子列打开级联删除,这会导致异常。

修复是手动将 B 类中的级联选项之一覆盖为 false。我不知道如何将 CascadeOnDelete 选项设置为字典属性。但这里是 Fluent api。

 HasRequired(x => x.Parent)
         .WithMany()
         .HasForeignKey(x => x.ParentId)
         .WillCascadeOnDelete(false);

我希望 EF 团队尝试为我们编写一份全面的 Code First 配置(Fluent API)手册。 AdventureWorks-2008 数据库是一个很好的选择。

关于entity-framework-4 - 这个映射有什么问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7814400/

相关文章:

visual-studio-2010 - 如何将 Entity Framework 4 与 Visual Studio 2013 结合使用

c# - 如何在 Entity Framework POCO 类中表示外键

c# - Entity Framework 中的通用查询方法

c# - Entity Framework 可扩展框架

asp.net - 使用默认成员关系的 MVC3 Entity Framework

c# - 首先在 EF4.1 代码中,使用注释、配置文件或在 OnModelCreating 中配置实体有什么区别?

ef-code-first - 如何在不使用迁移的情况下使用 LocalDB 和 EF

c# - Entity Framework Code First 复合键上的一对一关系

entity-framework - 单个实体上的 EF 多对多

entity-framework-4 - Entity Framework 4 代码优先 : Where is my database?