gpt4 book ai didi

entity-framework - 如何防止 Code First 对关系启用外键约束?

转载 作者:行者123 更新时间:2023-12-02 01:16:54 26 4
gpt4 key购买 nike

我有两个实体,用户和反馈,在用户名字段的帮助下,它们之间存在一对多关系。

Feedback --> User 
-------- --------
username username

但是,有时反馈可能来自未注册用户,反馈上的用户名字段将为空。在这种情况下,由于外键约束,添加反馈将失败。

如何以声明方式或通过 Fluent API 禁用对关系强制执行外键约束?创建数据库时默认启用它。

谢谢!

最佳答案

您不需要为您的目的禁用外键约束的执行,您只需要允许外键的 NULL 值,这被称为可选一对多关系(与不允许外键的 NULL 值的必需关系相反)。

您可以通过以下方式定义此可选关系:

public class Feedback
{
public int Id { get; set; }

[ForeignKey("User")]
public int? UserId { get; set; }
public User User { get; set; }
}

外键具有可空类型 int? 使关系成为可选的。如果 User 有一个名为 Id 的主键属性,您甚至可以省略 [ForeignKey] 属性,因为 Entity Framework 会检测到 UserId 作为基于命名约定的 User 导航属性的外键。

或者,您可以使用 Fluent API 而不是数据注释:

modelBuilder.Entity<Feedback>()
.HasOptional(f => f.User)
.WithMany() // or WithMany(u => u.Feedbacks)
.HasForeignKey(f => f.UserId);

关于entity-framework - 如何防止 Code First 对关系启用外键约束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10324231/

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