gpt4 book ai didi

entity-framework - EF Code 一、将两个导航属性映射到同一个对象类型

转载 作者:行者123 更新时间:2023-12-04 07:24:35 24 4
gpt4 key购买 nike

如果我有一个 User具有以下属性的类:

    public Guid UserPreferenceId { get; set; }
public virtual DefaultUserPreference UserPreference { get; set; }

public Guid SecondaryUserPreferenceId { get; set; }
public virtual DefaultUserPreference SecondaryUserPreference { get; set; }

我怎样才能通过流畅的 API 做到这一点?当我尝试运行它时,它说:

Introducing FOREIGN KEY constraint on table 'Users' may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints. Could not create constraint. See previous errors.



我见过一些这样的问题,但它们总是涉及一个导航属性和一个集合。这种关系也是单向的,但如果必须的话,它可以是双向的,不确定这是否重要。

最佳答案

默认情况下, Entity Framework 创建与级联删除的关系。创建从一个实体到另一种类型的两个关系尝试创建两个级联删除关系,数据库将抛出您看到的错误。

使用 Code-First Fluent 配置删除一个或两个关系上的级联删除:

modelBuilder.Entity<User>()
.HasOptional(u => u.UserPreference)
.WithMany()
.WillCascadeOnDelete(false);
modelBuilder.Entity<User>()
.HasOptional(u => u.SecondaryUserPreference)
.WithMany()
.WillCascadeOnDelete(false);

关于entity-framework - EF Code 一、将两个导航属性映射到同一个对象类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17200407/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com