如何为一个模型创建两个导航属性(EF6代码优先)

罗曼

使用EF6 Code First约定,我想用到同一张表的两个外键创建模型。例如,现在我有团队模型:

public class Team
{
    public Guid Id { get; set; }
    public String Name { get; set; }

    public virtual ICollection<Match> Matches { get; set; }
}

匹配模型:

public class Match
{
    public Guid Id { get; set; }
    public Int32 TeamHomeScore { get; set; }
    public Int32 TeamAwayScore { get; set; }

    public Guid TeamHomeId { get; set; } // I want these properties to be foreign keys
    public Guid TeamAwayId { get; set; } //

    public virtual Team TeamHome { get; set; }
    public virtual Team TeamAway { get; set; }
}

但是在项目运行之后,我有下一个异常:

在表“匹配”上引入外键约束“ FK_dbo.Matches_dbo.Teams_TeamHomeId”可能会导致循环或多个级联路径。指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他FOREIGN KEY约束。无法创建约束。

有什么建议吗?

失落的计算机

SQL Server返回错误,因为它无法处理多个级联路径。多重路径是具有许多团队属性比赛

将删除时的级联设置为false。

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Match>()
                    .HasRequired<Team>(i => i.TeamHome)
                    .WithMany(i => i.Matches)
                    .WillCascadeOnDelete(false);

        base.OnModelCreating(modelBuilder);
    }

由于没有级联删除,因此必须先删除团队的比赛,然后再删除团队本身。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C#EF6代码优先TPH-导航到使用注释侵犯同一实体的两个实体的属性

来自分类Dev

在EF6代码中,首先我可以更改导航属性值,然后断开关系,并将两个更改都保存在一个事务中吗?

来自分类Dev

具有相同实体的2个属性时的EF6代码优先混淆

来自分类Dev

EF6代码优先模型ForeignKey

来自分类Dev

如何使用与同一子表相关的两个或多个列表正确构建EF5代码优先模型?

来自分类Dev

EF6代码第一个多个一对多映射问题/“多重性”错误

来自分类Dev

EF6代码第一个多个一对多映射问题/“多重性”错误

来自分类Dev

在实体框架6代码优先方法中在两个表之间创建一对多和多对一映射

来自分类Dev

具有一个EF6模型(数据库优先)和一个代码优先的解决方案

来自分类Dev

在一个单独的项目中使用Identity用户模型的Entity Framework 6代码优先迁移

来自分类Dev

具有相同类型导航属性集合的EF6代码第一实体-如何告诉EF是什么关系?

来自分类Dev

如何以EF6代码优先的方式删除实体之间的关系?

来自分类Dev

EF6:如何将两个不同的count()查询合并为一个?

来自分类Dev

EF 代码优先:如何将两个实体的数据保存在一个表中?

来自分类Dev

如何为模型创建一个表格,该表格将继承两个孩子的模型嵌入轨道4

来自分类Dev

更改模型时,EF6代码优先删除表(不是整个数据库)

来自分类Dev

EF6代码优先-使用不匹配的外键配置一对一关系

来自分类Dev

EF6代码优先-使用不匹配的外键配置一对一关系

来自分类Dev

如何在EF6代码优先中将泛型类型与数据库上下文一起使用

来自分类Dev

如何在EF6代码优先中对数据库上下文使用通用类型

来自分类Dev

实体框架6代码优先-存储库实现是一个好方法吗?

来自分类Dev

实体框架6代码优先-存储库实现是一个好方法吗?

来自分类Dev

Git只需一个提交差异即可维护同一代码的两个版本

来自分类Dev

EF代码首先,指向同一对象的两个导航属性

来自分类Dev

如何使用两端的导航属性正确创建EF一对零或一个关系?

来自分类Dev

EF6代码优先对表进行复数的对象名称无效

来自分类Dev

EF6代码优先:使用Fluent API声明外键

来自分类Dev

EF6代码优先-可能导致循环或多个级联路径

来自分类Dev

使对动态表LINQ EF6代码优先的访问成为可能

Related 相关文章

  1. 1

    C#EF6代码优先TPH-导航到使用注释侵犯同一实体的两个实体的属性

  2. 2

    在EF6代码中,首先我可以更改导航属性值,然后断开关系,并将两个更改都保存在一个事务中吗?

  3. 3

    具有相同实体的2个属性时的EF6代码优先混淆

  4. 4

    EF6代码优先模型ForeignKey

  5. 5

    如何使用与同一子表相关的两个或多个列表正确构建EF5代码优先模型?

  6. 6

    EF6代码第一个多个一对多映射问题/“多重性”错误

  7. 7

    EF6代码第一个多个一对多映射问题/“多重性”错误

  8. 8

    在实体框架6代码优先方法中在两个表之间创建一对多和多对一映射

  9. 9

    具有一个EF6模型(数据库优先)和一个代码优先的解决方案

  10. 10

    在一个单独的项目中使用Identity用户模型的Entity Framework 6代码优先迁移

  11. 11

    具有相同类型导航属性集合的EF6代码第一实体-如何告诉EF是什么关系?

  12. 12

    如何以EF6代码优先的方式删除实体之间的关系?

  13. 13

    EF6:如何将两个不同的count()查询合并为一个?

  14. 14

    EF 代码优先:如何将两个实体的数据保存在一个表中?

  15. 15

    如何为模型创建一个表格,该表格将继承两个孩子的模型嵌入轨道4

  16. 16

    更改模型时,EF6代码优先删除表(不是整个数据库)

  17. 17

    EF6代码优先-使用不匹配的外键配置一对一关系

  18. 18

    EF6代码优先-使用不匹配的外键配置一对一关系

  19. 19

    如何在EF6代码优先中将泛型类型与数据库上下文一起使用

  20. 20

    如何在EF6代码优先中对数据库上下文使用通用类型

  21. 21

    实体框架6代码优先-存储库实现是一个好方法吗?

  22. 22

    实体框架6代码优先-存储库实现是一个好方法吗?

  23. 23

    Git只需一个提交差异即可维护同一代码的两个版本

  24. 24

    EF代码首先,指向同一对象的两个导航属性

  25. 25

    如何使用两端的导航属性正确创建EF一对零或一个关系?

  26. 26

    EF6代码优先对表进行复数的对象名称无效

  27. 27

    EF6代码优先:使用Fluent API声明外键

  28. 28

    EF6代码优先-可能导致循环或多个级联路径

  29. 29

    使对动态表LINQ EF6代码优先的访问成为可能

热门标签

归档