Breeze BeforeSaveEntities:如何修改savemap

Nic*_*las 1 breeze

我从关于BeforeSaveEntities的Breeze文档中读到以下内容:

"可以在此方法返回的地图中添加或删除实体".

所以我想我可以在saveMap中添加一个新的EntityInfo实例.我的问题是:我该怎么做?在任何地方都有这样的例子吗?

我可以完美地遍历字典.但是因为EntityInfo没有构造函数,并且它的所有字段都只是get,所以我觉得有点卡在这里.欢迎任何帮助.

谢谢

Jay*_*and 5

好的,这是一个非常人为的例子,它包含了一个BeforeSaveEntities覆盖,它可以创建注释记录以及通常保存的内容.注释记录包括基于SaveOptions.Tag属性的值生成的注释.

protected override Dictionary<Type, List<EntityInfo>> BeforeSaveEntities(Dictionary<Type,   List<EntityInfo>> saveMap) {
    var comment = new Comment();
    var tag = ContextProvider.SaveOptions.Tag;
    comment.Comment1 = (tag == null) ? "Generic comment" : tag.ToString();
    comment.CreatedOn = DateTime.Now;
    comment.SeqNum = 1;
    var ei = ContextProvider.CreateEntityInfo(comment);
    List<EntityInfo> comments;
    if (!saveMap.TryGetValue(typeof(Comment), out comments)) {
      comments = new List<EntityInfo>();
      saveMap.Add(typeof(Comment), comments);
    }
    comments.Add(ei);

    return saveMap;
  }
Run Code Online (Sandbox Code Playgroud)

}