Как сделать свойство OwnsOne в EF Core 3.0 обязательным при сопоставлении со столбцами SQL Server? - PullRequest
2 голосов
/ 16 октября 2019

У меня есть основной профиль сущности, который имеет свойство Name, являющееся объектом значения. Объект Name имеет два свойства: First и Last. Когда я использую Fluent API для сопоставления свойств объектов Name со столбцами в таблице профиля, я указываю, что они обязательны. Когда я создаю миграцию, он говорит, что 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();
                });
}

Любая помощь, которую вы можете оказать, была бы полезной.

1 Ответ

0 голосов
/ 18 октября 2019

Я обратился в команду EF Core, и в настоящее время единственный способ сделать это - вручную изменить созданную миграцию, установив nullable = false. Он был помечен как запрос функции, поэтому будем надеяться, что однажды они его исправят!

...