如何通过Entity Framework将记录添加到包含一个标识列的表和一个通过newid()自动分配值的Hash列。
这是我的代码。
using (GM.Entity.Entities context = new GM.Entity.Entities())
{
var q = context.xattachment.Add(new Entity.xattachment(){});
context.SaveChanges();
return q.AttachmentID;
}
当我添加像新Entity.xattachment(){ Hash = "1234"}
这样的值时,它可以正常工作。如何添加不具有new Entity.xattachment(){}
?
答案 0 :(得分:2)
实体框架将根据这些值生成一个sql,因此要实现您的需求,请执行以下两个选项之一
不要映射hash属性并让sql数据库插入默认值newid(),但这意味着EF永远不会知道该列,并且您无法像加载时那样检索它你的实体。
向您的实体添加构造函数并将hash属性初始化为新值,因此您在添加实体时无需初始化它,我个人更喜欢这个选项,因为它可以让您灵活地覆盖值如果您的代码决定传递哈希值,您仍然可以在加载实体时检索它。
希望有所帮助。