Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/300.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# linq-插入新数据将替换数据库中的现有数据。为什么?_C#_Linq To Sql_Visual Studio 2010 - Fatal编程技术网

C# linq-插入新数据将替换数据库中的现有数据。为什么?

C# linq-插入新数据将替换数据库中的现有数据。为什么?,c#,linq-to-sql,visual-studio-2010,C#,Linq To Sql,Visual Studio 2010,当我调用datacontextInstance.Insertonsubmit()和datacontextInstance.submitChanges()时,它会在插入新数据之前清除数据库中的所有现有数据 如何执行真正的插入操作 我想在不清除现有数据的情况下向现有表中添加新数据 谢谢 编辑: 这是我试过的测试代码 using System; using System.Collections.Generic; using System.Linq; using System.Text; namesp

当我调用datacontextInstance.Insertonsubmit()和datacontextInstance.submitChanges()时,它会在插入新数据之前清除数据库中的所有现有数据

如何执行真正的插入操作

我想在不清除现有数据的情况下向现有表中添加新数据

谢谢

编辑:

这是我试过的测试代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {

            DataClasses1DataContext entities = new DataClasses1DataContext();
            for (int i = 1; i <= 100; i++)
            {
                textdata dt = new textdata();
                dt.id = i;
                dt.ipaddress = "172.168.3.2";
                dt.pcname = "testusr";
                dt.publicip = "test pub ip";
                dt.username = "testusr";
                dt.textdata1 = "Some DATA";
                dt.dttime = DateTime.Now;
                entities.textdatas.InsertOnSubmit(dt);
                entities.SubmitChanges(System.Data.Linq.ConflictMode.ContinueOnConflict);
            }
            foreach (textdata dtdata in entities.textdatas)
            {
                Console.WriteLine(dtdata.dttime.Value.ToString());

            }
            Console.ReadLine();


        }
    }
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
命名空间控制台应用程序2
{
班级计划
{
静态void Main(字符串[]参数)
{
DataClasses1DataContext entities=新DataClasses1DataContext();

对于(int i=1;i除非您还检索了所有数据并为每个检索到的元素调用了DeleteOnSubmit,否则在执行InsertOnSubmit时不应该删除任何数据。插入的项会导致在调用SubmitChanges时生成SQL insert语句。我所知道的获取delete语句的唯一方法是调用DeleteOnSubmit。也许,您认为需要在调用submit changes之前从表中删除项,以减少推回服务器的数据量。这是不正确的。只有新的或更改的数据才会被发回——调用DeleteOnSubmit将在调用SubmitChanges时强制删除数据

除非您还检索了所有数据并为每个检索到的元素调用了DeleteOnSubmit,否则在执行InsertOnSubmit时不应该删除任何数据。插入的项会导致在调用SubmitChanges时生成SQL insert语句。我所知道的获取delete语句的唯一方法是调用DeleteOnSubmit。也许,您认为在调用submit changes之前需要从表中删除项,以减少推送回服务器的数据量。这是不正确的。只有新的或更改的数据才会被发回——而调用DeleteOnSubmit将在调用SubmitChanges时强制删除数据。

您能t发布你的插入方法?我想问题出在你的代码而不是VS2010上。

你能发布你的插入方法吗?我想问题出在你的代码而不是VS2010上。

我猜id是数据库中的键,但它不是自动生成的。
因此,当您创建新实体并为它们分配db-db条目中已经存在的键时,新实体就会覆盖这些键。

我猜id是数据库中的键,但它不是自动生成的。
因此,当您创建新实体并为其分配db中已存在的键时,db条目会被新实体覆盖。

Title很糟糕,是否可以调整它以反映您遇到的问题?ConnectionString…您使用的是什么提供商?现在也发布了my App.Config…这就是您在i.e.n中执行代码的确切上下文吗ot示例?这很奇怪…请尝试正确地处理DataContext,或者使用包装,或者通过调用其dispose()显式地处理方法。看不出这有什么不同,但值得一试,否则请尝试重新创建项目…标题很糟糕,可以调整它以反映您遇到的问题吗?ConnectionString…您使用的是什么提供商?现在也发布了我的App.Config…这是您执行代码的确切上下文吗,即不是示例?这非常简单nge…请尝试正确处理DataContext,使用wrap或通过调用其dispose()方法显式处理。看不出这有什么不同,但值得一试,否则请尝试重新创建项目。。。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
    </configSections>
    <connectionStrings>
        <add name="ConsoleApplication2.Properties.Settings.Database1ConnectionString"
            connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"
            providerName="System.Data.SqlClient" />
    </connectionStrings>
</configuration>