C#: 如何判断一个Linq2SQL实体是否存在于数据库中

5

我想检查一个实体是否已经添加到数据库中。那么,我如何看到ab之间的区别呢?

var a = dataContext.Things.First(x => x.Name == something);
var b = new Thing { Name = something };

为了更清晰地说明,如果我有这样一个例子:
var thing = dataContext.Things.FirstOrDefault(x => x.Name == something) 
            ?? new Thing { Name = something };

我该如何判断是否需要插入thing

我找到一个相关的问题,可能会帮到你: https://dev59.com/UXVD5IYBdhLWcg3wE3Ro - bruno conde
好的,那我也会去看看! - Svish
1个回答

4

如果您使用FirstOrDefault而不是First,那么如果没有匹配项,它将返回null

至于如何知道是否需要插入 - 只需记住它最初是否为null:

var a = dataContext.Things.FirstOrDefault(x => x.Name == something);
bool needsInsertion = (a == null);
a = a ?? new Thing { Name = something }; 

或者,如果Thing中有一个ID字段,它是由数据库自动填充的,那么您可以使用该字段来检测它是否已经在数据库中。


是的,我知道。也许我的问题没有表达清楚... 我会在问题中详细说明。 - Svish
如果没有插入,id 是否总是0?还是其他的什么呢? - Svish

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接