gpt4 book ai didi

c# - 当表没有主键时使用 DeleteAllOnSubmit

转载 作者:行者123 更新时间:2023-11-30 16:04:48 25 4
gpt4 key购买 nike

我正在尝试从没有主键的数据库中删除记录。以下作品:

using (myDataContext db = new myDataContext ())
{
db.ExecuteCommand("DELETE FROM myTable WHERE TradeDate = {0}", date);
}

(其中 date 是函数的输入)。但是当我尝试将它转换为 LINQ 时

using (myDataContext db = new myDataContext ())
{
db.myTable.DeleteAllOnSubmit(db.myTable.Where(t => t.TradeDate.Date == date.Date));
db.SubmitChanges();
}

我收到以下错误,因为该表没有主键:

Additional information: Can't perform Create, Update, or Delete operations on 'Table(myTable)' because it has no primary key.

我找到了以下有关此问题的旧帖子

DB:4.44:Dml Operations Using Linq Query For A Table Without Primary Key zm

Dml Operations using linq query for a table without primary key.

但我不明白如何实现他们建议的修复(即将另一个键设置为 IsPrimary)。

有没有办法使用 LINQ 来做到这一点?请记住,向实际 SQL 表添加 PK 不是一个选项(除非我只添加一个行计数标识列)。

最佳答案

如果没有主键,则不会发出两个接口(interface):INotifyPropertyChangingINotifyPropertyChanged,因此 LINQ to SQL 不知道您的记录已更改。执行以下操作:

  1. 打开 LINQ 设计器。
  2. 打开要从中删除记录的表的属性窗口。
  3. 单击要删除的实体中的任意列,您将看到标有“主键”的属性。
  4. 将要用作主键的列的值更改为 true。

关于c# - 当表没有主键时使用 DeleteAllOnSubmit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34492509/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com