如何在EF中处理rowguid以进行复制

时间:2014-03-28 22:46:25

标签: c# entity-framework-5 replication

因为我们已经实现了复制方案,所以在我们的数据库中尝试[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处理复制的最佳方法是什么?

2 个答案:

答案 0 :(得分:1)

不能为复制方案配置开发数据库,​​您应该能够在没有rowguid列的情况下映射数据库,向DBA请求数据库备份,然后在不保留复制设置的情况下还原它。请检查此链接:Entity Framework update table with rowguid

答案 1 :(得分:1)

尝试更改模型图(.edmx),您必须将StoreGeneratedPattern属性从“None”更改为“Computed”。