HasAlternateKey позволяет дублировать записи - PullRequest
0 голосов
/ 15 ноября 2018

В моем DbContext

protected override void OnModelCreating(ModelBuilder builder)
{
    builder.Entity<Order>().HasAlternateKey(o => o.OrderNumber);

    base.OnModelCreating(builder);
}

определено следующее, но когда я вставляю несколько заказов, каждый раз используя один и тот же код:

var order = new Order()
{
    OrderNumber = "12345",
    OrderParts = new List<OrderPartQuantity>()
    {
        new OrderPartQuantity()
        {
            Part = _context.Parts.FirstOrDefault(p => p.BellNumber == "100123"),
            Quantity = 10
        }
    }
};

_context.Orders.Add(Order);
_context.SaveChanges();

Заказ вставляетсякаждый раз, хотя все они имеют одинаковое значение OrderNumber.

Я правильно понял или я что-то упустил?Я изо всех сил пытаюсь найти объяснение этому

1 Ответ

0 голосов
/ 15 ноября 2018

Похоже, что для вызова HasAlternateKey в OnModelBuilding на самом деле требуется новая миграция БД, прежде чем она будет применена.

После вызова

Add-Migration TestHasAlternateKeys

Эта миграция была создана

public partial class HasAlternateKeyTest : Migration
{
    protected override void Up(MigrationBuilder migrationBuilder)
    {
        migrationBuilder.AlterColumn<string>(
            name: "OrderNumber",
            table: "Orders",
            nullable: false,
            oldClrType: typeof(string),
            oldNullable: true);

        migrationBuilder.AddUniqueConstraint(
            name: "AK_Orders_OrderNumber",
            table: "Orders",
            column: "OrderNumber");
    }

    protected override void Down(MigrationBuilder migrationBuilder)
    {
        migrationBuilder.DropUniqueConstraint(
            name: "AK_Orders_OrderNumber",
            table: "Orders");

        migrationBuilder.AlterColumn<string>(
            name: "OrderNumber",
            table: "Orders",
            nullable: true,
            oldClrType: typeof(string));
    }
}

Теперь, после вызова

Update-Database

я больше не могу дублировать этот столбец

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...