C# 使用linq to sql从多个表中删除时的外键约束问题

C# 使用linq to sql从多个表中删除时的外键约束问题,c#,asp.net,linq-to-sql,C#,Asp.net,Linq To Sql,我有两个带有外键约束的表。如何在一个事务中从这两个表中删除行?LINQtoSQL似乎以错误的顺序调用了我的删除。是否有地方可以检查并确保linq到SQL正确识别约束 DataContext.OtherImages.DeleteOnSubmit(myOtherImage); DataContext.Images.DeleteOnSubmit(myImage); DataContext.SubmitChanges(); 外键约束在其他图像上。谢谢 你应该吃点 [Association(

我有两个带有外键约束的表。如何在一个事务中从这两个表中删除行?LINQtoSQL似乎以错误的顺序调用了我的删除。是否有地方可以检查并确保linq到SQL正确识别约束

 DataContext.OtherImages.DeleteOnSubmit(myOtherImage);
 DataContext.Images.DeleteOnSubmit(myImage);
 DataContext.SubmitChanges();

外键约束在其他图像上。谢谢

你应该吃点

[Association(
    Name="FK_OtherImages_Images",
    Storage="_OtherImages",
    OtherKey="ImageId",
    DeleteRule="NO ACTION")]
public EntitySet<OtherImage> OtherImages{
    ...
}
应该行得通。我猜你忘了另一把外键。您可以通过执行以下操作查看正在运行的查询

DataContext.Log = Console.Out;
或者类似的东西。我不建议仅仅为了让这项工作而级联删除,因为它不需要这样做就可以工作。

简单逻辑

设置外键关系

转到选项::表设计器

  • 复制的强制执行:否
  • 强制外键约束:否

  • “SQL似乎以错误的顺序调用了我的删除。”-你确定吗?。是的,应该是这样的,但是为什么外键约束会出错呢?如果它按照我的顺序执行,应该没有问题,对吗?它可能不是对您问题的回答,但您可以创建外键,以便在删除
    图像
    表中的行时,它会自动删除表中引用的
    其他图像
    中的行。在这里@mozillanerd查看关于DELETE CASCADE的
    :在我发布的SO链接中给出了相同的建议……这是我忘记的调整表的另一个键。谢谢
    
    DataContext.Log = Console.Out;