gpt4 book ai didi

entity-framework - 相当于 Entity Framework Core 1 (EF7) 中的 .HasOptional

转载 作者:行者123 更新时间:2023-12-03 06:36:55 28 4
gpt4 key购买 nike

考虑两个类。

public class File
{
[Key]
public string Id { get; set; }

public string Message_Id { get; set; }

internal Message Message { get; set; }
}

public class Message
{
[Key]
public string Id { get; set; }
}

在 EF6 中,对于 N : 1..0 关系,有这个流畅的 API。

modelBuilder.Entity<File>()
.HasOptional(e => e.Message ).WithMany().HasForeignKey(e => e.Message_Id);

Entity Framework Core 1 中的等效项是什么?

谢谢

最佳答案

您在 EF 7 中找不到等效方法。按照惯例,CLR 类型可以包含 null 的属性将被配置为可选。因此,决定该关系是否可选的是 FK 属性是否为 nullable或不分别。

综上所述,由于您的 Message_Id FK 属性是 string,它已经接受 null 值,因此如果您使用以下 Fluent Api配置:

modelBuilder.Entity<File>()
.HasOne(s => s.Message)
.WithMany()
.HasForeignKey(e => e.Message_Id)

EF 会将您的关系配置为可选(或根据要求 N : 0..1)。

如果您的 FK 属性是像 int 这样的值类型,您应该将其声明为可空 (int?)。

我还注意到现在您有一个带有 internal 访问修饰符的导航属性。您应该始终将实体属性声明为 public

关于entity-framework - 相当于 Entity Framework Core 1 (EF7) 中的 .HasOptional,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35562483/

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