通过返回空值与查询添加记录的DbContext

问题描述 投票:0回答:1

我做了一个研究,我没有发现任何东西至今。感谢您的帮助。

正如标题所说,我做一个查询记录添加到我的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所)方法的差异。

c# .net entity-framework-5
1个回答
1
投票

AddOrUpdate()通过的EntityKey检查所有脑干纪录。所以,如果x.Name它要检查是不是关键 - 你的做法是正确的。

另外,作为你只有名称值作为输入参数(“抢”),你必须从上下文请求记录,你将它连接。所以,那么你可以改变它,因为你需要修改的内容将被自动跟踪。另外,创建它,如果它不存在,并调用它Add()

考虑到你的方法上面是确定,将工作和我没有看到它的任何问题。

在另一方面,你的代码应该是简单而优雅的,因为它可以。这是由你支持你的代码或你的队友很重要的。这就是为什么使用像AddOrUpdate或其他内置东西结构是很好的做法。但不是法律。

附:我不看像{ desiredEntity.ValueToModify == 3; }代码。这是因为3或许应该传递给你的方法作为参数潜在的不良做法。

© www.soinside.com 2019 - 2024. All rights reserved.