Просто чтобы добавить к исходному комментарию @ DevilSuichiro, вам нужно установить DatabaseGeneratedOption.None для свойства bundle_id вашей сущности, как показано ниже. Было задано полное имя, поэтому вам не нужно искать пространство имен:)
[Key]
[Column(Order = 0)]
[StringLength(255)]
[DatabaseGenerated(DatabaseGeneratedOption.None)] // Located here: System.ComponentModel.DataAnnotations.Schema
public string bundle_id { get; set; }
Почему?
По умолчанию DatabaseGeneratedOption.Identity по умолчанию устанавливается в Entity Framework для столбца первичного ключа. Это указывает на то, что База данных отвечает за генерацию значения. В результате Entity Framework исключает столбец из любых сгенерированных операторов SQL Insert , так как он ожидает, что SQL сгенерирует значение.
Чтобы увидеть это в действии, используйте
yourDbContext.Database.Log() = (query) => Debug.WriteLine(query);
перед выполнением SaveChanges или запуском SQL Profiler, чтобы увидеть различия в сгенерированном SQL.
UPDATE
Для ясности, когда вы используете Database.Log () = (query) => Debug.WriteLine (query); результаты выводятся в окно инструментов диагностики Visual Studio. Это запускается по умолчанию при запуске сеанса отладки , если ранее вы не закрывали окно.
Если он не отображается во время отладки, его можно найти здесь: Отладка -> Windows -> Показать инструменты диагностики.
Ниже приведен пример вывода, чтобы вы знали, что ищете:
