因为我们已经实现了复制方案,所以在我们的数据库中尝试[INSERT / UPDATE]记录时遇到了一些麻烦。 (SQL SERVER 2012)
当我尝试保存实体时,我会收到以下消息:
不允许使用rowguidcol属性更新列。
交易在触发器中结束。批次已中止。
有时这一个
无法在对象' dbo.Job'中插入重复的键行。具有唯一索引' MSmerge_index_1345596032'。重复键值为(00000000-0000-0000-0000-000000000000)。
我对如何生成edmx模型有点失落,而没有将rowguid放在实体中。
我用来保存的模式
var entry = db.Entry(job);
entry.State = (job.JobId == 0) ? EntityState.Added : EntityState.Modified;
db.SaveChanges();
return entry.Entity.JobId;
如何使用Ef和复制而不会对rowguid发疯?
更新
我已经在模态浏览器中将StoreGeneratedPattern的rowguid属性设置为Identity,它似乎再次工作,但我不知道这样做的影响。
使用EF处理复制的最佳方法是什么?
答案 0 :(得分:1)
不能为复制方案配置开发数据库,您应该能够在没有rowguid列的情况下映射数据库,向DBA请求数据库备份,然后在不保留复制设置的情况下还原它。请检查此链接:Entity Framework update table with rowguid
答案 1 :(得分:1)
尝试更改模型图(.edmx),您必须将StoreGeneratedPattern属性从“None”更改为“Computed”。