Я новичок в EF (v6.1). Попытка использовать подход Code-First.
Я хотел бы, чтобы столбец Идентификатора был сгенерирован на стороне SQL-сервера (newsequentialid()
), однако с возможностью переопределения этих значений. Мой код:EF6.1 newsequentialid с возможностью установки значения вручную
[Key, Required, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid Id { get; set; }
Какие результаты в безупречном SQL:
[Id] [uniqueidentifier] NOT NULL DEFAULT (newsequentialid())
Однако EF просто игнорирует любое значение, я бы установить на Id
имущество и передать нуль в SQL. По существу опрос не будет работать:
MyContext context = new MyContext();
MyClass item = new MyClass();
Guid id = Guid.NewGuid();
item.Id = id;
context.MyTable.Add(item);
context.MyTable.Create();
context.SaveChanges();
Assert.AreEqual(item.Id, id);
Что делать, чтобы выполнить мою тестовую работу?
Просто создайте второй подкласс DbContext, который отображает «MyClass» (но под псевдонимом) в ту же таблицу без «DatabaseGeneratedOption.Identity». Используйте этот класс для исключительных случаев. –