C# linq-插入新数据将替换数据库中的现有数据。为什么?
当我调用datacontextInstance.Insertonsubmit()和datacontextInstance.submitChanges()时,它会在插入新数据之前清除数据库中的所有现有数据 如何执行真正的插入操作 我想在不清除现有数据的情况下向现有表中添加新数据 谢谢 编辑: 这是我试过的测试代码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
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>