Linq-to-sql插入已经存在的唯一行
本文关键字:唯一 存在 插入 Linq-to-sql | 更新日期: 2023-09-27 18:04:57
如果插入已经存在的具有唯一列的行,会发生什么?它是静默失败还是更新记录?如果它更新已存在的行,是否有办法使它失败?或者我是否使用select先检查行?
您将得到一个由后端sql server生成的异常。
//编辑:我更新了代码以适合您正在寻找的内容。在SQL Server中,请确保你的表主键列是一个标识列,种子和增量都设置为1。当你试图提交你的类时,不要添加主键。它会自动使用这个。
如果试图将一行插入到具有相同唯一ID的表中,将抛出异常。Linq-To-Sql的更新是棘手的…请参阅下面的代码。第一部分将失败,但将在try-catch中捕获。第二部分是如何进行更新。你得根据主键把它拉出来,修改字段,然后提交。请看这个博客:http://www.richardbushnell.net/2008/02/18/how-to-update-data-with-linq-to-sql/
class Program
{
static void Main(string[] args)
{
DataClasses1DataContext ctx = new DataClasses1DataContext();
try
{
for (int i = 0; i < 10; i++)
{
ctx.Table_1s.InsertOnSubmit(new Table_1
{
Name = "John"
});
ctx.SubmitChanges(System.Data.Linq.ConflictMode.FailOnFirstConflict);
}
var list = from i in ctx.Table_1s
select i;
foreach (var item in list)
{
Console.WriteLine(item.Name);
}
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
//OUTPUT: "John"
// "John"
// "John"
// "John"
// "John"
// "John"
// "John"
// "John"
// "John"
// "John"
// "John"
}
}