首页 > 解决方案 > 在 MVC Core 中使用现有数据库时出现 InvalidOperationException

问题描述

我试图在我的应用程序中使用现有的数据库,但每次我点击它说的视图

处理 InvalidOperationException 时发生未处理的异常:尝试激活“BookStore.Models.UsersRepo”时无法解析类型“BookStore.Models.BookStoreContext”的服务

语境

    namespace BookStore.Models
    {
        public partial class BookStoreContext : DbContext
        {
            public BookStoreContext()
            {
            }

            public BookStoreContext(DbContextOptions<BookStoreContext> options)
                : base(options)
            {
            }

            public virtual DbSet<Users> Users { get; set; }

            protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
            {
                if (!optionsBuilder.IsConfigured)
                {
                    optionsBuilder.UseSqlServer("Server=(localdb)\\V11.0;Database=BookStore;Trusted_Connection=True;");
                }
            }

            protected override void OnModelCreating(ModelBuilder modelBuilder)
            {
                modelBuilder.HasAnnotation("ProductVersion", "2.2.3-servicing-35854");

                modelBuilder.Entity<Users>(entity =>
                {
                    entity.HasKey(e => e.UserId);

                    entity.Property(e => e.UserId).HasColumnName("User_ID");

                    entity.Property(e => e.Password)
                        .IsRequired()
                        .HasMaxLength(50);

                    entity.Property(e => e.UserName)
                        .IsRequired()
                        .HasColumnName("User_Name")
                        .HasMaxLength(50);
                });
            }
        }
    }

用户存储库

    namespace BookStore.Models
    {
        public class UsersRepo : IUser
        {
            private readonly BookStoreContext _bookStoreContext;

            public UsersRepo(BookStoreContext bookStoreContext)
            {
                _bookStoreContext = bookStoreContext;
            }

            public void AddUser(Users users)
            {
                _bookStoreContext.Users.Add(users);
                _bookStoreContext.SaveChanges();
            }
        }
    }

用户模型

    public partial class Users
        {
            public long UserId { get; set; }
            public string UserName { get; set; }
            public string Password { get; set; }
            public int Type { get; set; }
        }


     public interface IUser
        {
            void AddUser(Users users);
        }

用户控制器

    public class UsersController : Controller
        {
            private readonly IUser _userRepo;

            public UsersController(IUser userRepo)
            {
                _userRepo = userRepo;
            }

            [HttpGet]
            public IActionResult Index()
            {
                return View();
            }

            [HttpPost]
            public IActionResult Index(Users users)
            {
                _userRepo.AddUser(users);

                return RedirectToAction("UserAddedSuccessfully");
            }

            public IActionResult UserAddedSuccessfully()
            {
                return View();
            }
        }

标签: asp.net-core-mvcentity-framework-core

解决方案


我试过这个,它工作得很好

 public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
        services.AddDbContext<BookStoreContext>();
        // In production, the Angular files will be served from this directory
        services.AddSpaStaticFiles(configuration =>
        {
            configuration.RootPath = "ClientApp/dist";
        });
    }

推荐阅读