2017-02-18 58 views
1

我刚刚发现了Marten,并且正在尝试学习如何正确使用它。使用Marten for ASP.NET MVC/Core的正确方法

创造新的记录,也可以是直线前进的提交过程中提供一个空白表单/视图,然后 - 只需打开一个新的会话,然后进行保存这样的:

using (var session = _documentStore.LightweightSession()) 
     { 
      session.Store(model); 
      session.SaveChanges();     
     } 

又是如何的更新现有记录?在获取记录并将其显示在表单上之后,使用上面使用的相同代码还是有其他方法?我发现更新的唯一例子是通过调用Load()方法从会话中加载记录,然后编辑属性,之后调用所使用会话的SaveChanges()方法。

回答

2

Marten使用document identity跟踪文档。 Id可以是公共领域或财产,名称必须是idIdID。从doc

报价:

貂的.Net API使得插入和更新之间没有区别。 由Marten生成的用于更新文档 存储表的Postgresql函数为您执行“upserts”。任何时候通过IDocumentSession.Store(文档)注册的文档是 ,Marten为该文档的id类型运行 “自动分配”策略。有关文档ID的更多信息,请参阅 文档标识。

这意味着您不必在更新文档之前加载文档。如果您知道其身份值,则只需更改文档中的某个属性,然后拨打IDocumentSession.Store(document)即可在数据存储中存在具有此ID的文档时执行更新。

+0

我明白了。我读过它有加载记录的脏跟踪系统,但通过“Store()”和“SaveChanges()”相同的方法传递整个模型,这个特性是否仍然有效?我相信覆盖整个JSONB字段比仅更新脏字段花费了很多。谢谢! – eSPiYa