从具有外键约束的多个表中删除记录

user3223395667

我正在使用Asp.Net MVC并构建一个电子商务应用程序。

我的数据库中有4张桌子

Product 其中有 ProductId(PK), Name, Price, StoreId(FK)

Store 其中有 StoreId(PK), Name, CreatedOn

Order 其中有 OrderId(PK), StoreId(FK), OrderDate, OrderTotal

OrderDetail 其中有 OrderDetailId(PK), OrderId(FK), Quantity, UnitPrice, Weight

当我尝试删除单个产品时,它没有给出任何错误并删除了产品,如果我删除Order记录它给出了OrderDetails外键错误,我知道我必须先删除OrderDetail记录,然后再删除Order记录。

我的情况是,商店有多个产品,每个商店都有订单,然后有订单详细信息。

现在,我不想每次都删除单个记录,因为它需要很多时间。我想删除一个商店,其他表(产品,订单,OrderDetails)中的所有记录也将被删除。我怎样才能做到这一点 ?

我已经尝试过此代码在我的IdentityModel.cs中

protected override void OnModelCreating(System.Data.Entity.DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Product>()
            .HasRequired(s => s.Store)
            .WithMany()
            .HasForeignKey(d => d.StoreId)
            .WillCascadeOnDelete(false); // also tried with TRUE, didn't work

        modelBuilder.Entity<Order>()
            .HasRequired(s => s.Store)
            .WithMany()
            .HasForeignKey(d => d.StoreId)
            .WillCascadeOnDelete(false); // also tried with TRUE, didn't work

        modelBuilder.Entity<OrderDetail>()
            .HasRequired(s => s.Order)
            .WithMany()
            .HasForeignKey(d => d.OrderId)
            .WillCascadeOnDelete(false); // also tried with TRUE, didn't work
    }

控制器

[HttpPost]
    public ActionResult StoreDelete(int? id, Store store)
    {
        try
        {
            if (id == null)
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);

            store = db.Stores.Find(id);

            if (store == null)
            {
                return HttpNotFound();
            }
            else
            {
                db.Stores.Remove(store);
                db.SaveChanges();
                return RedirectToAction("ManageStores", "Store");  
            }

        }

        catch
        {
            return View();
        }
    }

看法

@using (Html.BeginForm("StoreDelete", "Store", new { id = ViewBag.StoreId }, FormMethod.Post, new { @class = "form-horizontal", role = "form" }))
{
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<h4 class="text-danger">Are you sure you want to delete this store ?</h4>
<br />
@Html.TextBoxFor(m => m.Name, new { @class = "inputboxes texbboxstyle form-control", @readonly = "readonly" })
<br>
@Html.TextBoxFor(m => m.CreatedOn, new { @class = "inputboxes texbboxstyle form-control", @readonly = "readonly" })
<br>
<input type="submit" class="btn-lg btn-danger" style="border-radius:0px; width:200px;" value="Delete" />
}
Imran Luhur |

您可以从表中删除多个记录,但是顺序如下

var Order = db.Orders.where(x=>x.StoreId == store.StoreId) 
var OrderDetail = db.OrderDetails.where(x=>x.OrderId== Order.OrderId) 
var Product = db.Products.where(x=>x.StoreId == store.StoreId)

db.Orders.RemoveRange(Order);
db.OrderDetails.RemoveRange(OrderDetail);
db.Products.RemoveRange(Product);
db.Stores.Remove(store);
db.SaveChanges();

我希望它可能对您有用

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

MVC删除具有多个必需外键约束的记录

来自分类Dev

一键添加多个表中的数据,并且它们之间具有外键约束

来自分类Dev

使用外键从多个表中删除

来自分类Dev

删除具有外键约束的模型条目的问题

来自分类Dev

具有外键表约束的备份MySQL模式

来自分类Dev

如何删除与其他表具有外键关系的All()记录

来自分类Dev

用具有相同外键的多个记录对联接表进行排序

来自分类Dev

在 SQLite 中,如何更改表以添加具有默认空值和外键约束的列?

来自分类Dev

如何在SQL Server中查询具有多个键/值对约束的记录?

来自分类Dev

动态删除多个外键约束

来自分类Dev

从具有特定外键的其他表中获取记录

来自分类Dev

postgres:涉及多个表的外键约束

来自分类Dev

涉及多个表的外键约束

来自分类Dev

删除具有主键的表中的行以及具有外键的不同表中的相关行

来自分类Dev

如何使用php pdo从mysql中具有外键约束的数据库中删除数据

来自分类Dev

错误:删除表违反外键约束。仍然从表中引用键ID(许多)

来自分类Dev

具有多个外键的内部联接表

来自分类Dev

MySQL - 嵌套外键(具有多个表)

来自分类Dev

从具有2个外键的表(级联)中删除行

来自分类Dev

使用外键约束从FILETABLE中删除

来自分类Dev

外键约束在空表中失败

来自分类Dev

在Rails中查找具有多个外键值的记录

来自分类Dev

postgres:删除具有外键的行,而不删除外键表的数据

来自分类Dev

您是否可以具有外键约束而不必创建另一个表?

来自分类Dev

SQL将数据插入表中具有外键

来自分类Dev

SQL将数据插入表中具有外键

来自分类Dev

将数据插入具有外键的表中

来自分类Dev

SQL Server性能:具有外键约束的复合键

来自分类Dev

在具有重复键的表中查找具有不同键的最新记录

Related 相关文章

  1. 1

    MVC删除具有多个必需外键约束的记录

  2. 2

    一键添加多个表中的数据,并且它们之间具有外键约束

  3. 3

    使用外键从多个表中删除

  4. 4

    删除具有外键约束的模型条目的问题

  5. 5

    具有外键表约束的备份MySQL模式

  6. 6

    如何删除与其他表具有外键关系的All()记录

  7. 7

    用具有相同外键的多个记录对联接表进行排序

  8. 8

    在 SQLite 中,如何更改表以添加具有默认空值和外键约束的列?

  9. 9

    如何在SQL Server中查询具有多个键/值对约束的记录?

  10. 10

    动态删除多个外键约束

  11. 11

    从具有特定外键的其他表中获取记录

  12. 12

    postgres:涉及多个表的外键约束

  13. 13

    涉及多个表的外键约束

  14. 14

    删除具有主键的表中的行以及具有外键的不同表中的相关行

  15. 15

    如何使用php pdo从mysql中具有外键约束的数据库中删除数据

  16. 16

    错误:删除表违反外键约束。仍然从表中引用键ID(许多)

  17. 17

    具有多个外键的内部联接表

  18. 18

    MySQL - 嵌套外键(具有多个表)

  19. 19

    从具有2个外键的表(级联)中删除行

  20. 20

    使用外键约束从FILETABLE中删除

  21. 21

    外键约束在空表中失败

  22. 22

    在Rails中查找具有多个外键值的记录

  23. 23

    postgres:删除具有外键的行,而不删除外键表的数据

  24. 24

    您是否可以具有外键约束而不必创建另一个表?

  25. 25

    SQL将数据插入表中具有外键

  26. 26

    SQL将数据插入表中具有外键

  27. 27

    将数据插入具有外键的表中

  28. 28

    SQL Server性能:具有外键约束的复合键

  29. 29

    在具有重复键的表中查找具有不同键的最新记录

热门标签

归档