Код: Выделить всё
public class Parent
{
public Child Child { get; set; }
}
public class Child
{
public string PropertyA { get; set; }
public string PropertyB { get; set; }
}
Код: Выделить всё
public class SomeContext : DbContext
{
...
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity
().OwnsOne(x => x.Child, y => y.ToJson());
base.OnModelCreating(modelBuilder);
}
}
< /code>
Когда я запускаю < /p>
dotnet ef migrations add SomeContext_Initial
< /code>
EF Core генерирует миграцию что -то вроде этого: < /p>
...
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "Parent",
columns: table => new
{
Child = table.Column(type: "nvarchar(max)", nullable: false)
}
}
...
}
< /code>
Я использую SQL Server в качестве моей базы данных. Насколько я знаю, SQL Server автоматически перемещает Child Код: Выделить всё
PropertyAЭто то, что я явно не хочу по соображениям производительности.
Даже если я указываю длину Propertya и Propertyb , инструмент миграции все еще генерирует дочерний код nvarchar (max) .
Я попытался указать длину столбца с использованием .hasannotation ("maxlength", 1000) (или с использованием атрибута [maxlength (1000)] на дочернем свойство) и у которого не было эффекта. Это также не имело никакого эффекта
Есть ли способ достичь длины столбца, отличной от nvarchar (max) , за исключением редактирования файла миграции вручную?
Подробнее здесь: https://stackoverflow.com/questions/775 ... in-ef-core
Мобильная версия