EF Code First: Добавить строку в таблицу с неидентичным первичным ключом

Чтобы уменьшить эту проблему до простой версии, я создал эту таблицу:

create table TestTable(id int primary key, descr varchar(50))

Обратите внимание, что поле id не является полем идентификации. Теперь, если я попытаюсь использовать EF Code First, чтобы вставить строку:

[Table("TestTable")]
public class TestTable
{
    [Key]
    public int id { get; set; }
    public string descr { get; set; }
}

public class TestContext : DbContext
{
    public TestContext(string connectionString) : base(connectionString) {}
    public DbSet<TestTable> TestTables { get; set; }
}

static void Main()
{
    const string connectionString = "...";
    using (var db = new TestContext(connectionString))
    {
        db.TestTables.Add(new TestTable { id = 42, descr = "hallo" });
        db.SaveChanges();
    }
}

В результате возникает исключение:

Невозможно вставить значение NULL в столбец "id", таблицу "TestTable"; столбец не допускает null.

Но код, вставляющий строку, указывает id = 42. Любая подсказка или приветствие приветствуются.

Ответ 1

Просто добавьте эту DataAnnotations [DatabaseGenerated(DatabaseGeneratedOption.None)] и библиотеки

using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

[Table("TestTable")]
public class TestTable
{
    [Key, DatabaseGenerated(DatabaseGeneratedOption.None)]
    public int id { get; set; }
    public string descr { get; set; }
}