我做了一个研究,我没有发现任何东西至今。感谢您的帮助。
正如标题所说,我做一个查询记录添加到我的DbContext,如果它返回一个空值,那么我创造的纪录。否则,我修改它。
我的问题是:这是一个很好的做法还是我不应该这样做呀?该代码是这样的:
var desiredEntity = MyDbContext.SingleOrDefault(x => x.Name == "Rob");
if (desiredEntity == null)
{ desiredEntity = new DbSetOfEntity()... //create if doesn't exists }
else
{ desiredEntity.ValueToModify == 3; }
MyDbContext.SaveChanges()
是什么这一点,并明确创建实体,并与DbContext.Add()方法将它的区别?
编辑:类似的问题here被问过,但我不希望使用AddOrUpdate方法或附加和手动更改实体的状态。我只是想知道,如果我的做法是没有问题的,什么是使用常规的。新增(myEntity所)方法的差异。
AddOrUpdate()
通过的EntityKey检查所有脑干纪录。所以,如果x.Name
它要检查是不是关键 - 你的做法是正确的。
另外,作为你只有名称值作为输入参数(“抢”),你必须从上下文请求记录,你将它连接。所以,那么你可以改变它,因为你需要修改的内容将被自动跟踪。另外,创建它,如果它不存在,并调用它Add()
。
考虑到你的方法上面是确定,将工作和我没有看到它的任何问题。
在另一方面,你的代码应该是简单而优雅的,因为它可以。这是由你支持你的代码或你的队友很重要的。这就是为什么使用像AddOrUpdate
或其他内置东西结构是很好的做法。但不是法律。
附:我不看像{ desiredEntity.ValueToModify == 3; }
代码。这是因为3或许应该传递给你的方法作为参数潜在的不良做法。