C#:如何查看Linq2SQL实体是否在数据库中

Svi*_*ish 5 c# datacontext linq-to-sql

我想检查一个实体是否已添加到数据库中.那么,我怎么能看到a和之间的这种差异b

var a = dataContext.Things.First(x => x.Name == something);
var b = new Thing { Name = something };
Run Code Online (Sandbox Code Playgroud)

为了更清楚,如果我有这个:

var thing = dataContext.Things.FirstOrDefault(x => x.Name == something) 
            ?? new Thing { Name = something };
Run Code Online (Sandbox Code Playgroud)

如何查看是否thing需要插入?

Jon*_*eet 4

如果您使用FirstOrDefault代替,则如果没有匹配项,First则会返回。null

至于知道是否需要插入 - 只需记住它是否为空:

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

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