У меня есть объект с столбцом Auto-identity (int)
. В рамках семени данных я хочу использовать определенные значения идентификатора для "стандартных данных" в своей системе, после чего я хочу, чтобы база данных определяла значение id.
До сих пор мне удалось установить IDENTITY_INSERT
на "Вкл" как часть пакета вставки, но Entity Framework не создает оператор insert, который включает Id
. Это имеет смысл, поскольку модель думает, что база данных должна предоставить значение, но в этом случае я хочу предоставить значение.
Модель (псевдокод):
public class ReferenceThing
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id{get;set;}
public string Name{get;set;}
}
public class Seeder
{
public void Seed (DbContext context)
{
var myThing = new ReferenceThing
{
Id = 1,
Name = "Thing with Id 1"
};
context.Set<ReferenceThing>.Add(myThing);
context.Database.Connection.Open();
context.Database.ExecuteSqlCommand("SET IDENTITY_INSERT ReferenceThing ON")
context.SaveChanges(); // <-- generates SQL INSERT statement
// but without Id column value
context.Database.ExecuteSqlCommand("SET IDENTITY_INSERT ReferenceThing OFF")
}
}
Любой, кто может предложить какие-либо идеи или предложения?