Чтобы уменьшить эту проблему до простой версии, я создал эту таблицу:
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
. Любая подсказка или приветствие приветствуются.