繁体   English   中英

错误 OnModelCreating(ModelBuilder)':找不到合适的方法来覆盖

[英]Error OnModelCreating(ModelBuilder)': no suitable method found to override

在新的 asp.net core 3.1 项目中返回上述错误消息。 我有一个根据Text配置的多对多关系

不完全确定为什么会发生这种情况,但我已将 EntityFrameworkCore 包添加到项目中,所以我不确定它为什么返回此错误。

DBContext.cs:

using Microsoft.EntityFrameworkCore;
using Ballista.Models;

namespace Ballista.Data 
{
    public class AnnouncementsContext : DbContext
    {
        public AnnouncementsContext (DbContextOptions<AnnouncementsContext> options)
            : base(options)
        {
        }

        public DbSet<Announcements> Announcements { get; set; }
        public DbSet<AnnouncementTargets> AnnouncementTargets { get; set; }
        public DbSet<TargetGroup> TargetGroup { get; set; }
    }
    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<AnnouncementTargets>()
            .HasKey(at => new { at.AnnouncementID, at.TargetGroupID });

        modelBuilder.Entity<AnnouncementTargets>()
            .HasOne(at => at.Announcement)
            .WithMany(a => a.AnnouncementTargets)
            .HasForeignKey(at => at.AnnouncementID);
        modelBuilder.Entity<AnnouncementTargets>()
            .HasOne(at => at.TargetGroup)
            .WithMany(tg => tg.AnnouncementTargets)
            .HasForeignKey(t => t.TargetGroupID);
        base.OnModelCreating(modelBuilder);
    }

}

AnnouncementModels.cs:

using System;
using System.ComponentModel.DataAnnotations;
using System.Collections.Generic;

namespace Ballista.Models
{
    public class Announcements
    {
        public int ID { get; set; }
        public string Title { get; set; }
        public string SubTitle { get; set; }
        public string Content { get; set; }
        public ICollection<AnnouncementTargets> AnnouncementTargets { get; set; }

    }

    public class TargetGroup
    {
        public int ID { get; set; }
        public string Group { get; set; }
        public ICollection<AnnouncementTargets> AnnouncementTargets { get; set; }
    }

    public class AnnouncementTargets
    {
        public int AnnouncementID { get; set; }
        public Announcements Announcement { get; set; }
        public int TargetGroupID { get; set; }
        public TargetGroup TargetGroup { get; set; }
    }
}

我配置了多对多关系,但我不断收到错误消息<invalid-global-code>.OnModelCreating(ModelBuilder)': no suitable method found to override

DbContext 有 OnModelCreating(DbModelBuilder) 要覆盖。 将函数定义从 OnModelCreating(ModelBuilder modelBuilder) 更改为 OnModelCreating(DbModelBuilder modelBuilder)

protected override void OnModelCreating(DbModelBuilder modelBuilder)

Al menos según el código que publicaste, la declaración del método está fuera de tu clase AnnouncementsContext。 – dar un toque 20 de marzo de 2020 a las 8:52

MUCHAS GRACIAS me pasaba lo mismo!!!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM