Как заставить структуру сущностей вставлять столбцы идентификаторов?

Я хочу написать код C # для инициализации моей базы данных с некоторыми начальными данными. Очевидно, что для этого потребуется способность устанавливать значения различных столбцов Identity при вставке. Я'м с использованием подхода, основанного на коде. По умолчанию,DbContext обрабатывает соединение с базой данных, и поэтому вы не можетеSET IDENTITY_INSERT [dbo].[MyTable] ON, Итак, что ядо сих пор сделали это использоватьDbContext конструктор, который позволяет мне указать соединение с БД, которое будет использоваться. Затем я установилIDENTITY_INSERT вON в этом соединении с БД, а затем попробуйте вставить мои записи, используя сущность Framework. Вот'пример того, что яу нас так далеко:

public class MyUserSeeder : IEntitySeeder {
    public void InitializeEntities(AssessmentSystemContext context, SqlConnection connection) {
        context.MyUsers.Add(new MyUser { MyUserId = 106, ConceptPersonId = 520476, Salutation = "Mrs", Firstname = "Novelette", Surname = "Aldred", Email = null, LoginId = "520476", Password="28c923d21b68fdf129b46de949b9f7e0d03f6ced8e9404066f4f3a75e115147489c9f68195c2128e320ca9018cd711df", IsEnabled = true, SpecialRequirements = null });
        try {
            connection.Open();
            SqlCommand cmd = new SqlCommand("SET IDENTITY_INSERT [dbo].[MyUser] ON", connection);
            int retVal = cmd.ExecuteNonQuery();
            context.SaveChanges();
        }
        finally {
            connection.Close();
        }
    }
}

Так близко и еще так далеко - потому что, хотяcmd.ExecuteNonQuery() работает нормально, когда я бегуcontext.SaveChanges()ЯЯ сообщил, что "Явное значение должно быть указано для идентификатора столбца в таблице 'MyUser» или когда для IDENTITY_INSERT задано значение ON или когда пользователь репликации вставляет в столбец идентификации NOT FOR REPLICATION. "

Предположительно, поскольку MyUserId (который является столбцом Identity в таблице MyUser) является первичным ключом, структура сущности не 'не пытайтесь установить его, когда я звонюcontext.SaveChanges()хотя я далMyUser сущность значение дляMyUserId имущество.

Есть ли способ заставить инфраструктуру сущностей попытаться вставить даже значения первичного ключа для сущности? Или, возможно, способ временно пометитьMyUserId как не являющийся значением первичного ключа, поэтому EF пытается вставить его?

Ответы на вопрос(10)

Ваш ответ на вопрос