gpt4 book ai didi

c# - 映射到 SQL Server 列时如何在 EF Core 3.0 中创建 OwnsOne 属性?

转载 作者:太空宇宙 更新时间:2023-11-03 14:39:02 25 4
gpt4 key购买 nike

我有一个主实体 Profile,它的属性 Name 是一个值对象。 Name 对象有两个属性 First 和 Last。当我使用 Fluent API 将 Name 对象属性映射到 Profile 表中的列时,我指定它们是必需的。当我创建迁移时,它说 nullable 是真的。我认为这与在 EF Core 3.0 中拥有的实体现在是可选的这一事实有关,但我如何告诉 EF 它们实际上是必需的?

public class Profile
{
public Name Name { get; private set; }
...
}
public class Name
{
public string First { get; }
public string Last { get; }
...
}
public override void Configure(EntityTypeBuilder<Profile> builder)
{
base.Configure(builder);

builder.OwnsOne(
navigationExpression: p => p.Name,
buildAction: n =>
{
n.Property(n => n.First)
.HasColumnName("NameFirst")
.HasMaxLength(25)
.IsRequired();

n.Property(n => n.Last)
.HasColumnName("NameLast")
.HasMaxLength(25)
.IsRequired();
});
}

如果您能提供任何帮助,那就太好了。

最佳答案

EF 核心 5

除了在 ValueObject 中的必需属性上设置 .IsRequired() 之外,你需要在x.OwnsOne(...)之后根据需要配置导航:

builder.OwnsOne(o => o.Address, a =>
{
a.WithOwner();

a.Property(p => p.Street)
.IsRequired();

a.Property(p => p.ZipCode)
.IsRequired();

a.Property(p => p.City)
.IsRequired();

}).Navigation(p => p.Address).IsRequired();
=============^========================================^

问题: https://github.com/dotnet/efcore/issues/12100

致谢 @AndriySvyryd

关于c# - 映射到 SQL Server 列时如何在 EF Core 3.0 中创建 OwnsOne 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58417334/

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