我是EF(v6.1)的新手。試圖使用Code-First方法。
我想要在SQL服務器端生成Id列(newsequentialid()
),但可以覆蓋這些值。 我的代碼:EF6.1 newsequentialid能夠手動設置值
[Key, Required, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid Id { get; set; }
導致完美SQL:
[Id] [uniqueidentifier] NOT NULL DEFAULT (newsequentialid())
但是EF簡單地忽略我會設置爲Id
財產和傳遞null 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'。使用這個類來處理特殊情況。 –