【问题标题】:DbContextOptionBuilder does not contain a definition for UseSqlServer - VS 2017 / VS for MacDbContextOptionBuilder 不包含 UseSqlServer 的定义 - VS 2017 / VS for Mac
【发布时间】:2019-03-01 20:42:21
【问题描述】:

昨天我写了一个小代码,它连接到本地数据库(SQL Server)并将一个表的项目计数写入 VS 2017 中的控制台(昨天更新)。

我想从我的 IMac(Docker 中的 Docker + SQL Server)在 .net 核心中托管一个 api,所以我将项目加载到 VS for Mac(昨天最后更新)。

当我在调试模式下运行程序时,没有断点,它会抛出一个内部错误异常。当我在这里创建一个新断点时:

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
    if (!optionsBuilder.IsConfigured)
    {
        optionsBuilder.UseSqlServer("server=localhost;database=mra_ss_db;user id=sa;password=MYPASSWORD;");
    }
}

它说:

DbContextOptionBuilder 不包含 UseSqlServer 的定义

在 Windows 上的 VS 2017 中,一切正常。

我为这个错误找到了很多“解决方案”,但没有任何用处。 (Microsoft.EntityFrameWorkCore 使用、引用等)

我应该在我的 IMac 上使用 VS Code,而不是 VS 2017 for Mac?

这是我的完整 dBContext 代码:

using System;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.SqlServer;
using Microsoft.EntityFrameworkCore.Metadata;

namespace MRA.DataAccessLayer_Core.Models
{
public partial class mra_ss_dbContext : DbContext
{
    public mra_ss_dbContext()
    {
    }

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

    public virtual DbSet<Companies> Companies { get; set; }
    public virtual DbSet<Countries> Countries { get; set; }
    public virtual DbSet<Genres> Genres { get; set; }
    public virtual DbSet<Languages> Languages { get; set; }
    public virtual DbSet<Movies> Movies { get; set; }
    public virtual DbSet<MoviesCompanies> MoviesCompanies { get; set; }
    public virtual DbSet<MoviesCountries> MoviesCountries { get; set; }
    public virtual DbSet<MoviesGenres> MoviesGenres { get; set; }
    public virtual DbSet<MoviesLanguages> MoviesLanguages { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        if (!optionsBuilder.IsConfigured)
        {
            optionsBuilder.UseSqlServer("server=localhost;database=mra_ss_db;user id=sa;password=MYPASSWORD;");
        }
    }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Companies>(entity =>
        {
            entity.HasKey(e => e.CompanyId);

            entity.Property(e => e.CompanyId)
                .HasColumnName("CompanyID")
                .ValueGeneratedNever();

            entity.Property(e => e.LogoPath)
                .IsRequired()
                .IsUnicode(false);

            entity.Property(e => e.Name)
                .IsRequired()
                .IsUnicode(false);

            entity.Property(e => e.OriginCountry)
                .IsRequired()
                .IsUnicode(false);
        });

        modelBuilder.Entity<Countries>(entity =>
        {
            entity.HasKey(e => e.Iso31661);

            entity.Property(e => e.Iso31661)
                .HasColumnName("Iso_3166_1")
                .HasMaxLength(50)
                .IsUnicode(false)
                .ValueGeneratedNever();

            entity.Property(e => e.Name)
                .IsRequired()
                .IsUnicode(false);
        });

        modelBuilder.Entity<Genres>(entity =>
        {
            entity.HasKey(e => e.GenreId);

            entity.Property(e => e.GenreId)
                .HasColumnName("GenreID")
                .ValueGeneratedNever();

            entity.Property(e => e.Name)
                .IsRequired()
                .IsUnicode(false);
        });

        modelBuilder.Entity<Languages>(entity =>
        {
            entity.HasKey(e => e.Iso6391);

            entity.Property(e => e.Iso6391)
                .HasColumnName("Iso_639_1")
                .HasMaxLength(50)
                .IsUnicode(false)
                .ValueGeneratedNever();

            entity.Property(e => e.Name)
                .IsRequired()
                .HasMaxLength(50)
                .IsUnicode(false);
        });

        modelBuilder.Entity<Movies>(entity =>
        {
            entity.HasKey(e => e.MovieId);

            entity.Property(e => e.MovieId)
                .HasColumnName("MovieID")
                .ValueGeneratedNever();

            entity.Property(e => e.BackdropPath).IsUnicode(false);

            entity.Property(e => e.ImdbId)
                .HasColumnName("ImdbID")
                .IsUnicode(false);

            entity.Property(e => e.OriginalLanguage)
                .IsRequired()
                .HasMaxLength(50)
                .IsUnicode(false);

            entity.Property(e => e.OriginalTitle)
                .IsRequired()
                .IsUnicode(false);

            entity.Property(e => e.Overview).IsUnicode(false);

            entity.Property(e => e.PosterPath).IsUnicode(false);

            entity.Property(e => e.ReleaseDate).HasColumnType("datetime");

            entity.Property(e => e.Status)
                .IsRequired()
                .HasMaxLength(50)
                .IsUnicode(false);

            entity.Property(e => e.Tagline).IsUnicode(false);

            entity.Property(e => e.Title)
                .IsRequired()
                .IsUnicode(false);
        });

        modelBuilder.Entity<MoviesCompanies>(entity =>
        {
            entity.Property(e => e.CompanyId).HasColumnName("CompanyID");

            entity.Property(e => e.MovieId).HasColumnName("MovieID");

            entity.HasOne(d => d.Company)
                .WithMany(p => p.MoviesCompanies)
                .HasForeignKey(d => d.CompanyId)
                .OnDelete(DeleteBehavior.ClientSetNull)
                .HasConstraintName("FK__MoviesCom__Compa__398D8EEE");

            entity.HasOne(d => d.Movie)
                .WithMany(p => p.MoviesCompanies)
                .HasForeignKey(d => d.MovieId)
                .OnDelete(DeleteBehavior.ClientSetNull)
                .HasConstraintName("FK__MoviesCom__Movie__3A81B327");
        });

        modelBuilder.Entity<MoviesCountries>(entity =>
        {
            entity.Property(e => e.Iso31661)
                .IsRequired()
                .HasColumnName("Iso_3166_1")
                .HasMaxLength(50)
                .IsUnicode(false);

            entity.Property(e => e.MovieId).HasColumnName("MovieID");

            entity.HasOne(d => d.Iso31661Navigation)
                .WithMany(p => p.MoviesCountries)
                .HasForeignKey(d => d.Iso31661)
                .OnDelete(DeleteBehavior.ClientSetNull)
                .HasConstraintName("FK__MoviesCou__Iso_3__3F466844");

            entity.HasOne(d => d.Movie)
                .WithMany(p => p.MoviesCountries)
                .HasForeignKey(d => d.MovieId)
                .OnDelete(DeleteBehavior.ClientSetNull)
                .HasConstraintName("FK__MoviesCou__Movie__403A8C7D");
        });

        modelBuilder.Entity<MoviesGenres>(entity =>
        {
            entity.Property(e => e.GenreId).HasColumnName("GenreID");

            entity.Property(e => e.MovieId).HasColumnName("MovieID");

            entity.HasOne(d => d.Genre)
                .WithMany(p => p.MoviesGenres)
                .HasForeignKey(d => d.GenreId)
                .OnDelete(DeleteBehavior.ClientSetNull)
                .HasConstraintName("FK__MoviesGen__Genre__3C69FB99");

            entity.HasOne(d => d.Movie)
                .WithMany(p => p.MoviesGenres)
                .HasForeignKey(d => d.MovieId)
                .OnDelete(DeleteBehavior.ClientSetNull)
                .HasConstraintName("FK__MoviesGen__Movie__3B75D760");
        });

        modelBuilder.Entity<MoviesLanguages>(entity =>
        {
            entity.Property(e => e.Iso6391)
                .IsRequired()
                .HasColumnName("Iso_639_1")
                .HasMaxLength(50)
                .IsUnicode(false);

            entity.Property(e => e.MovieId).HasColumnName("MovieID");

            entity.HasOne(d => d.Iso6391Navigation)
                .WithMany(p => p.MoviesLanguages)
                .HasForeignKey(d => d.Iso6391)
                .OnDelete(DeleteBehavior.ClientSetNull)
                .HasConstraintName("FK__MoviesLan__Iso_6__3E52440B");

            entity.HasOne(d => d.Movie)
                .WithMany(p => p.MoviesLanguages)
                .HasForeignKey(d => d.MovieId)
                .OnDelete(DeleteBehavior.ClientSetNull)
                .HasConstraintName("FK__MoviesLan__Movie__3D5E1FD2");
        });
    }
}
}

还有来自控制台应用程序的小 Program.cs:

using System;
using System.Linq;
using MRA.DataAccessLayer_Core.Models;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.SqlServer;

namespace MRA.PresentationLayer_Console
{
    class Program
    {
        static void Main(string[] args)
        {
            mra_ss_dbContext _context = new mra_ss_dbContext();

            var list = _context.Movies.ToList();

            Console.WriteLine(list.Count);
            Console.ReadKey();
        }
    }
}

如果有人可以帮助我,请告诉我!

【问题讨论】:

    标签: c# sql-server visual-studio .net-core


    【解决方案1】:

    该问题的解决方案是添加包Microsoft.EntityFrameworkCore.SqlServer,然后在添加使用引用后会出现UseSqlServer。我希望它适用于与我遇到相同问题的任何人。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-11-25
      • 2017-03-13
      • 1970-01-01
      • 2021-08-03
      • 2018-03-27
      • 2017-11-06
      • 1970-01-01
      相关资源
      最近更新 更多