目前我正在尝试在 macOS 上开发 C# (ASP.NET MVC) Web 应用程序,我在 .NET 6.0.402 上运行
当我跑步时dotnet ef update database
要更新我的数据库,我收到此错误:
未找到方法:“System.Collections.Generic.IList`1 Microsoft.EntityFrameworkCore.Metadata.Conventions.ConventionSet.get_ModelFinalizingConventions()”。
我确实摆弄了我的 Migrations-> [serial]_[name].designer.cs 文件,因为它没有自动生成信息来匹配我运行时的模型dotnet ef migrations add
.
Jokes.cs (Model)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace JokeWebApp.Models
{
public class Joke
{
public int Id { get; set; }
public string? JokeQuestion { get; set; }
public string? JokeAnswer { get; set; }
//ctor shortcut for constructor
public Joke()
{
}
}
}
20221109024428_initialsetup.Designer.cs(数据->迁移)
// <auto-generated />
using System;
using JokeWebApp.Data;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
namespace JokeWebApp.Data.Migrations
{
[DbContext(typeof(ApplicationDbContext))]
[Migration("20221109024428_initialsetup")]
partial class initialsetup
{
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder.HasAnnotation("ProductVersion", "6.0.10")
.HasAnnotation("Relational:MaxIdentifierLength", 128)
.HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
modelBuilder.Entity("JokeWebApp.Models.Joke", b =>
{
b.Property<int>("Id").ValueGeneratedOnAdd()
.HasColumnType("int")
.HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
b.Property<string>("JokeAnswer")
.HasColumnType("nvarchar(max)");
b.Property<string>("JokeQuestion")
.HasColumnType("nvarchar(max)");
b.HasKey("Id");
b.ToTable("Joke");
});
...
项目.csproj
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<UserSecretsId>aspnet-JokeWebApp-c27aee20-1e9d-4266-993b-368018ae336f</UserSecretsId>
</PropertyGroup>
<ItemGroup>
<None Update="app.db" CopyToOutputDirectory="PreserveNewest" ExcludeFromSingleFile="true" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" Version="6.0.10" />
<PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="6.0.10" />
<PackageReference Include="Microsoft.AspNetCore.Identity.UI" Version="6.0.10" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="6.0.10" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="7.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="6.0.10" />
</ItemGroup>
</Project>
我不确定我是否缺少所需的软件包,或者我在摆弄某个地方时搞砸了designer.cs
file.
有人能指出我正确的方向吗?
我确保我的包参考Project.csproj
是最新的。想知道是否可能存在一些差异:
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="7.0.0" />
其他软件包的版本为“6.0.10”,不确定我是否应该将其作为Microsoft.EntityFrameworkCore.SqlServer.SqlServer
因为这是我为了访问而下载的包SqlServerValueGenerationStrategy.IdentityColumn
.
我还在另一个线程上读到该问题可能是由于旧版本的 DLL 造成的。如何确保所有内容都是最新文件,在重建应用程序之前我需要删除哪些构建项目?