gpt4 book ai didi

asp.net-mvc-3 - 设置表级别 WillCascadeOnDelete 不可用

转载 作者:行者123 更新时间:2023-12-03 16:24:00 27 4
gpt4 key购买 nike

我在这里拔头发。我在这里看到了在删除时关闭级联的解决方案,但我无法实现它。我不知道我在这里做错了什么,但我不断收到以下错误:

“System.Data.Entity.ModelConfiguration.EntityTypeConfiguration”不包含“WillCascadeOnDelete”的定义并且没有扩展方法“WillCascadeOnDelete”接受“System.Data.Entity.ModelConfiguration.EntityTypeConfiguration”类型的第一个参数可以找到(你是缺少 using 指令或程序集引用?)

我已经添加了必要的命名空间,但我不认为它是智能感知中任何地方的一个选项,我也没有进行任何搜索。我在 VS 2010 MVC 3

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using vf2.Models;
using vf2.Models.LinkTables;
using vf2.Models.Requests;
using System.Data.Entity;
using System.Data.Entity.ModelConfiguration.Conventions;
using System.Data.Entity.ModelConfiguration.Configuration;
using System.Data.Entity.ModelConfiguration;
using vf2.Models.Reporting;
using vf2.Models.POSObj;

namespace vf2.Models
{
public class vfContext : DbContext
{
public DbSet<App> Apps { get; set; }
public DbSet<Origin> Origins { get; set; }
public DbSet<WineType> WineTypes { get; set; }
public DbSet<VarType> VarTypes { get; set; }
public DbSet<Wine> Wines { get; set; }
public DbSet<Vintage> Vintages { get; set; }

public DbSet<Distributor> Distributors { get; set; }
public DbSet<Importer> Importers { get; set; }
public DbSet<Producer> Producers { get; set; }
public DbSet<Publication> Publications { get; set; }
public DbSet<Review> Reviews { get; set; }
public DbSet<UserType> UserTypes { get; set; }
public DbSet<Restaurant> Restaurants { get; set; }

public DbSet<WineListChangeRate> WineListChangeRates { get; set; }
public DbSet<MenuChangeRate> MenuChangeRates { get; set; }
public DbSet<WineListCount> WineListCounts { get; set; }

public DbSet<UserObj> UserObjs { get; set; }
public DbSet<ProducerUser> ProducerUsers { get; set; }
public DbSet<DistributorUser> DistributorUsers { get; set; }
public DbSet<RestaurantUser> RestaurantUsers { get; set; }

public DbSet<ProducerEditRequest> ProducerEditRequests { get; set; }
public DbSet<RequestStatus> RequestStatuses { get; set; }
public DbSet<VOAVIRequest> VOAVIRequests { get; set; }

public DbSet<POS> POSs { get; set; }
public DbSet<Cart> Carts { get; set; }
public DbSet<FutureUser> FutureUsers { get; set; }
public DbSet<Doc> Docs { get; set; }
public DbSet<DocType> DocTypes { get; set; }

public DbSet<WineVisit> WineVisits { get; set; }


protected override void OnModelCreating(DbModelBuilder modelBuilder)
{

modelBuilder.Entity<Review>().WillCascadeOnDelete(false);
//error here!

base.OnModelCreating(modelBuilder);
}
}
}

最佳答案

“级联删除”是关系的配置,而不是实体/表的配置。因此 WillCascadeOnDeleteCascadableNavigationPropertyConfiguration的方法.用例示例:

modelBuilder.Entity<Review>()
.HasRequired(r => r.Wine)
.WithMany()
.WillCascadeOnDelete(false);

这意味着如果从数据库中的目录中删除了葡萄酒,则不应将其评论与葡萄酒一起删除。这是此特定关系的属性,而不是 Reviews 的属性。 table 。

在这种情况下,尝试删除有评论的酒当然会导致外键约束违规和异常,但这就是您在所需关系上禁用级联删除时通常想要的(“不允许删除酒它有评论,只允许它用于没有任何评论的葡萄酒......”)。

关于asp.net-mvc-3 - 设置表级别 WillCascadeOnDelete 不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10884940/

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