c# - ASP.Net MVC 删除带有 FK 约束的记录

标签 c# asp.net asp.net-mvc asp.net-mvc-4

我的 asp.net MVC 应用程序在删除外键约束时遇到问题。来自阅读How to delete a record with a foreign key constraint?我知道我需要某种形式的代码来处理删除。

我目前有以下内容

   public override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Supplier>()
            .HasOptional(j => j.Agreement)
            .WithMany()
            .WillCascadeOnDelete(true);
        base.OnModelCreating(modelBuilder);
    }

但是 OnModelCreating 生成错误,它在覆盖 protected 继承成员时无法更改访问修饰符 这是因为我相信我正在使用 ApplicationUser 和 IdentityRole。

我可以解决这个问题吗?我需要在哪里放置我的代码?我最初认为我需要将其放入我的身份模型中,如下所示,但我认为这是错误的。

namespace Mark_MVC.Models
{
    // You can add profile data for the user by adding more properties to your ApplicationUser class, please visit http://go.microsoft.com/fwlink/?LinkID=317594 to learn more.
    public class ApplicationUser : IdentityUser
    {
        public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager)
        {
            // Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType
            var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
            // Add custom user claims here
            return userIdentity;
        }

    }

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
    public ApplicationDbContext()
        : base("Mark_MVC", throwIfV1Schema: false)
    {

    }

    public override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Supplier>()
            .HasOptional(j => j.Agreement)
            .WithMany()
            .WillCascadeOnDelete(true);
        base.OnModelCreating(modelBuilder);
    }

    public static ApplicationDbContext Create()
    {

        return new ApplicationDbContext();
    }

    public DbSet<Customer> Customers { get; set; }
    public DbSet<Supplier> Suppliers { get; set; }
    public DbSet<Agreement> Agreements { get; set; }
    public DbSet<Plan> Plans { get; set; }
    public DbSet<TimeSheet> TimeSheets { get; set; }
    public DbSet<CustomerPlan> CustomerPlans { get; set; }
}

有人能帮忙吗

非常感谢

最佳答案

OnModelCreating 具有 protected 访问修饰符,当您覆盖它时,您必须保持访问修饰符 protected :

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    //your code here
}

关于c# - ASP.Net MVC 删除带有 FK 约束的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36371899/

相关文章:

javascript - Kendo 日期选择器 - 将错误的日期格式传递给 Controller

c# - wordpress 最好的 C# 代码高亮插件是什么?

c# - 在方法签名中使用委托(delegate)和使用 Func<T>/Action<T> 有什么区别?

c# - 如何从 GridView 获取值并将其传递给 GridView 中 DropDownList 调用的方法?

javascript - 母版页和内容页上的多个 ScriptManager

javascript - 在 MVC View 中使用 JavaScript 将 UTC 时间转换为客户端浏览器的时区

asp.net-mvc - 如何使用 ASP.NET MVC 实现自定义缓存提供程序

c# - 为什么 WCF 契约(Contract)会包含 ref/out 参数?

c# - LINQ GroupBy 然后 OrderBy 上一个查询的属性

c# - HttpClient 请求的自定义 header