【问题标题】:Linq Joined Table Record DeleteLinq 加入表记录删除
【发布时间】:2011-02-27 11:15:42
【问题描述】:

我有一个关于 linq 删除的问题。

我在数据库中有 2 个表,它们已加入。

第一个表:UserID、UserName、UserSurname、UserPhone、CompanyId

第二个表:CompanyId、CompanyName

第一个表我有很多相关的第二个表的记录。

我想删除第二条记录中的一家公司,但首先我必须删除用户(超过 1 个)

如何使用 linq 删除它?

谢谢约翰,

【问题讨论】:

    标签: c# asp.net linq linq-to-sql


    【解决方案1】:

    如果我正确理解您的问题,您希望删除用户记录,并同时删除关联的公司记录。可能最简单的方法是将数据库中的外键设置为级联删除外键。然后只需使用 Linq 删除您要删除的用户记录。 SQL Server 将自动删除关联的公司记录。

    【讨论】:

    • 感谢兰迪。但是我怎么能做这个级联删除呢?我可以删除关系吗?
    • @John - 您想自己进行级联删除吗?你为什么想做这个?让数据库做繁重的工作。效率更高。
    • @John - 使用以下语法:ALTER TABLE XXX ADD CONSTRAINT FK_XXX FOREIGN KEY (XXX) REFERENCES XX(XXID) ON DELETE CASCADE GO
    【解决方案2】:

    你可以用这个

    var toDelete = from c in yourDataContext.Companies
                   where c.ID = 1
                   select c
    
    yourDataContext.Users.DeleteAllOnSumbit(toDelete .Users);
    yourDataContext.Companies.DeleteOnSumbit(toDelete );
    yourDataContext.SubmitChanges();
    

    如需进一步帮助,请告诉我。

    【讨论】:

    • 谢谢拉米。 Bu 我不能使用 c.Users 因为 c 没有声明。如果我尝试使用 toDelete.Users 它会给出错误:(
    • toDelete.Users -> users 我不能使用它,因为我使用它时会出错。像这样:“System.Linq.IQueryable”不包含“Users”的定义,并且找不到接受“System.Linq.IQueryable”类型的第一个参数的扩展方法“Users”(是您缺少 using 指令或程序集引用?)
    • 你在ORM(.dbml)文件中设置公司和用户的关系吗?
    • 单击关系链接并转到属性窗格并查看其名称。然后用它代替Users
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-02
    • 2015-05-21
    相关资源
    最近更新 更多