Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用实体框架添加唯一数据_C#_Asp.net_Sql Server_Linq_Entity Framework - Fatal编程技术网

C# 使用实体框架添加唯一数据

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(); 然而,我现在想做的只是添加新数据。这里我的意思

我一直在寻找这个问题的答案有一段时间了,但实际上找不到答案,也无法理解。我在我的ASP.NET4.5C#Web表单应用程序中使用实体框架——使用代码优先模型

到目前为止,我只做了一些简单的事情,比如使用对象向数据库中添加新数据,但现在我遇到了一个问题,我陷入了困境

这就是我到目前为止使用EF的方式,正如我在上面所写的,只是立即添加数据

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名代表,如果可以的话,我会给你们两个投票