C# 使用实体框架添加唯一数据
我一直在寻找这个问题的答案有一段时间了,但实际上找不到答案,也无法理解。我在我的ASP.NET4.5C#Web表单应用程序中使用实体框架——使用代码优先模型 到目前为止,我只做了一些简单的事情,比如使用对象向数据库中添加新数据,但现在我遇到了一个问题,我陷入了困境 这就是我到目前为止使用EF的方式,正如我在上面所写的,只是立即添加数据C# 使用实体框架添加唯一数据,c#,asp.net,sql-server,linq,entity-framework,C#,Asp.net,Sql Server,Linq,Entity Framework,我一直在寻找这个问题的答案有一段时间了,但实际上找不到答案,也无法理解。我在我的ASP.NET4.5C#Web表单应用程序中使用实体框架——使用代码优先模型 到目前为止,我只做了一些简单的事情,比如使用对象向数据库中添加新数据,但现在我遇到了一个问题,我陷入了困境 这就是我到目前为止使用EF的方式,正如我在上面所写的,只是立即添加数据 myContext.myObject.Add(object); myContext.SaveChanges(); 然而,我现在想做的只是添加新数据。这里我的意思
myContext.myObject.Add(object);
myContext.SaveChanges();
然而,我现在想做的只是添加新数据。这里我的意思是,例如,如果我有一个包含10个对象的列表,并且所有这些对象都已插入到数据库中,我希望在再次添加相同的列表时忽略它们。但是,如果列表收到了新的对象,比如说,我现在有10个以前的对象,还有5个新的对象。我希望添加5个新的,并且忽略数据库中已经存在的10个
到目前为止,我认为这只能通过某种方式使用LINQ来实现?但是怎么做呢
提前非常感谢您对我的帮助 在添加对象之前,使用linq检查对象是否已存在于数据库中
foreach(var obj in customObjects)
{
if(!myContext.myObjects.Any(o => string.Equals(o.title, obj.title, StringComparison.OrdinalIgnoreCase)))
{
myContext.myObject.Add(obj);
}
}
myContext.SaveChanges();
我建议您在“myObject”上使用ID字段,并检查它是否为
>0
,而不是在整个数据库中搜索字符串值。您使用什么标准来确定“已插入”的内容?唯一的身份证?Int、Guid等?嗨!我的标准是一个名为“title”的字符串/vchar(200)和一个名为“mainID”的int外键。因此,对于每个“mainID”-必须有唯一的“title”s。正如您所猜测的,唯一的方法是通过LINQ,看看是否有任何东西回来谢谢!你链接的帖子中的答案是:解决了我的问题,现在一切都很好!:)非常感谢。这个答案和这里给出的答案:解决了我的问题!太糟糕了,我还没有15名代表,如果可以的话,我会给你们两个投票