我正在跟随Julie Lerman的多元文学课程 - EntityFramework Core 2: Getting Started
。在这门课程中,她有3个项目。前两个Data
和Domain
基于.NET标准库。第三个项目Web
是.NET核心Web应用程序。
我遵循了这个结构。在Data
中,我添加了一个名为Client的POCO类。
在Domain
中,我添加了一个名为TestDbContext的类,如下所示:
public class TestDbContext : DbContext
{
public DbSet<Client> Clients { get; set; }
public TestDbContext(DbContextOptions<TestDbContext> options) : base(options)
{
}
}
在她的示例之后,我在我的Web
项目的Startup.cs中执行了以下操作,将提供程序和连接字符串注入DbContext。
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.AddDbContext<TestDbContext>(options =>
{
options.UseSqlServer(Configuration.GetConnectionString("TestConnection"));
});
}
最后,我尝试向此上下文添加迁移。我将Web
项目设置为启动项目。在软件包管理器控制台中,我输入add-migration initial
。
然后我收到以下错误:The current CSharpHelper cannot scaffold literals of type 'Microsoft.EntityFrameworkCore.Metadata.Internal.DirectConstructorBinding'. Configure your services to use one that can.
在Julie的视频中,这一切都适合她并且创建了迁移包。但是,对我来说 - 只是错误。关于可能发生的事情的任何线索?
答案 0 :(得分:10)
在“.csproj”文件中检查项目的包版本。以前我对 AspNet Core 和 EntityFramework Core (我猜)的版本mitch匹配有同样的问题。为我做同样的工作很好。找到解决方案Here
对我而言。
<PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.0-rc1-final" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.1.0-rc1-final" PrivateAssets="All" />
答案 1 :(得分:5)
从nuget软件包管理器中添加3个具有相同版本的软件包
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="2.1.2" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="2.1.2" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.1.2" />
答案 2 :(得分:2)
这帮了我大忙!
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp2.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.5" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="2.1.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.1.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.1.0" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.0.1" />
</ItemGroup>
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.1.0- preview1-final" />
</ItemGroup>
</Project>
答案 3 :(得分:0)
在数据库项目中安装插件 Microsoft.EntityFrameworkCore.Design (其中 dbcontext 类创建了项目)
答案 4 :(得分:0)
这对我有用:
->打开WebApp .csproj文件并进行以下更改:
<PropertyGroup>
<TargetFramework>netcoreapp2.0</TargetFramework>
</PropertyGroup>
现在变成:
<PropertyGroup>
<TargetFramework>netcoreapp2.2</TargetFramework>
</PropertyGroup>
->从掘金包中将最新的Microsoft.AspNetCore.App安装到Web应用中
->注释此行:
<PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.9" />
->通过注释掉“ app.UseBrowserLink()”来编辑StartUp.cs文件 ->重新编译解决方案
->添加迁移:初始添加迁移
快乐的编码...