Код: Выделить всё
public class Cart
{
public required Guid Id { get; init; }
public required List Products { get; init; }
}
public class CartProduct
{
public required Guid ProductId { get; init; }
public required int Quantity { get; set; }
}
Код: Выделить всё
public class CartEntityTypeConfiguration : IEntityTypeConfiguration
{
public void Configure(EntityTypeBuilder cartEntity)
{
cartEntity.ToTable("carts");
cartEntity
.HasKey(cart => cart.Id)
.HasName("pk_carts");
cartEntity
.Property(cart => cart.Id)
.HasColumnName("id");
cartEntity.OwnsMany(
cart => cart.Products,
products => products.ToJson("products")
);
}
}
Вот фрагмент кода из созданной миграции:
Код: Выделить всё
migrationBuilder.CreateTable(
name: "carts",
columns: table => new
{
id = table.Column(type: "uuid", nullable: false),
products = table.Column(type: "jsonb", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("pk_carts", x => x.id);
}
);
Я попробовал следующие два варианта. :
Код: Выделить всё
cartEntity.OwnsMany(
cart => cart.Products,
products => products.ToJson("products")
);
cartEntity
.Navigation(cart => cart.Products)
.IsRequired();
Код: Выделить всё
cartEntity
.OwnsMany(
cart => cart.Products,
products => products.ToJson("products")
)
.Navigation(cart => cart.Products)
.IsRequired();
Невозможно создать «DbContext» типа ''. Исключение «Cart.Products» невозможно настроить должным образом, поскольку оно было настроено как коллекция. был выброшен при попытке создать экземпляр. Информацию о различных шаблонах, поддерживаемых во время разработки, см. на странице https://go.microsoft.com/fwlink/?linkid=851728
Есть ли способ сделать это свойство не обнуляемым?
PS: да, я мог бы просто пойти и отредактировать созданную миграцию, но мне бы хотелось иметь возможность настроить это с помощью Fluent API.
Подробнее здесь: https://stackoverflow.com/questions/788 ... n-required