具有手动设置值的EF6.1 newsequentialid

时间:2016-11-14 22:21:57

标签: c# entity-framework entity-framework-6


我是EF(v6.1)的新手。尝试使用Code-First方法。
我想在SQL服务器端(newsequentialid())生成Id列,但是能够覆盖这些值。 我的代码:

[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);

我应该怎么做才能让我的测试工作?

1 个答案:

答案 0 :(得分:1)

如果您想手动设置Phone $sqlshow =@ mysqli_query($con,"SELECT `id`, `Registration_No`, `First_Name`, `Middle_Name`, `Sir_Name`, `Sex`, `Birth_Day`, `Email`, `Address`, `Phone` FROM `cdtistudent` WHERE id=40"); while($row = @mysqli_fetch_object($sqlshow)) {媒体资源,请删除Guid属性:

Id

如果将PK属性配置为DatabaseGenerated,则会在数据库中生成该值。此外,您不需要将此属性标记为[Key] public Guid Id { get; set; } ,默认情况下需要PK属性。