Breeze服务器端实体创建

时间:2014-03-25 23:15:50

标签: entity-framework breeze

当客户端向服务器发送更新时,我需要在服务器上创建实体(在服务器上创建的这些条目主要用于审计报告) 根据{{​​3}},我应该在服务器上执行以下操作:

protected override Dictionary<Type, List<EntityInfo>> BeforeSaveEntities(
            Dictionary<Type, List<EntityInfo>> saveMap)
{
     ...
     var auditInput= new AuditItem();
     auditInput.CreationTime = DateTime.UtcNow;
     var newEntity = _breezeContext.CreateEntityInfo(auditInput);
     if (!saveMap.ContainsKey(typeof (auditInput)))
          saveMap[typeof (auditInput)] = new List<EntityInfo>();
     ...
}

public class AuditItem
{
    public int AuditItemId      { get; set; }
    public DateTime CreationTime    { get; set; }
}

当每次保存只创建一个AuditItem时,这非常有效。但是,当在同一个保存操作的服务器上创建多个这些实体时,EF会尖叫,并显示以下错误消息:

  

AcceptChanges无法继续,因为对象的键值发生冲突   与ObjectStateManager中的另一个对象

调试显示ObjectStateManager持有AuditInput的多个实例,密钥为0,这使得状态管理器认为所有这些实体都是相同的实体。

问题 在服务器中创建它们时,如何帮助breeze生成不同的实体?有没有办法强制它为创建的实体生成新密钥?

0 个答案:

没有答案