Entity Code First Seeding выдает первичный ключ - PullRequest
0 голосов
/ 16 октября 2018

Все мои таблицы имеют автоматически сгенерированный и сгенерированный идентификатор.

[Required, Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[MaxLength(50)]
public string Id { get; set; }
/// <summary>
/// This is only for sorting transactions by number.
/// </summary>
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public long Nth { get; set; }

Это хорошо работает, кроме случаев создания данных в начальном числе.Мы генерируем массив идентификаторов и просто выполняем вставку или обновление, но мы всегда получаем нарушение первичного ключа Violation of PRIMARY KEY constraint 'PK_dbo.ActivityLogs'. Cannot insert duplicate key in object 'dbo.ActivityLogs'. The duplicate key value is (05zwZ4VMKA0jr8NQz1EZ8qEB7GX23x).

. Странно то, что он работает с некоторыми таблицами, а с другими - нет.Кто-нибудь знает, почему это?Это ошибка?

var _50activitylogIdsForTask = new [] {"18oB57zqrvzwrW9knGVl8ywRVbpdNL", "7nGPVlLx8AJWBr2KPxVlLMz0RKQXJk", "rlAezJPwj9O3LDdKorXbW9504q16EL", "wbJNzyxBVjygDRmJByd0WOQpYXEnZk", "VKlGJLAYqnBNa0mo18bP0nPxeX3Da4", "D67mBA5yzP1y0pwGO25dpPrb4E3n1G", "oZXO1b2lYNlA9wW1n5blw4qLEV9jGw", "m6gQRYz4VNwwXY0WEdZbYNw1XbeL7l", "gkWjenlPmMVLgBrxmlnYBRyZ9aApbo" //etc };
IList<ActivityLog> activityLogsForTask = new List<ActivityLog>();
for (int ii = 0; ii < 50; ii++)
{
    activityLogsForTask.Add(new ActivityLog()
    {
        Id = _50activitylogIdsForTask[ii],                    
        Sections = Sections.TaskTemplateMgmt,
        Action = Operations.Created,
        Details = "A new task, " + _50taskNames[ii] + " has been created, successfully.",
        CreatedDate = new DateTime(2018,9,15,13,1,57),
        CreatedById = adminid,
    });
}
context.ActivityLogs.AddOrUpdate(xx => xx.Nth, activityLogsForTask.ToArray());

Как мы решили это, удалив базу данных и снова запустив ее.Или context.ActivityLogs.RemoveRange(curActivities); context.SaveChanges(); прежде всего AddOrUpdate

Любая помощь будет принята с благодарностью.Спасибо.

...