在与项目中的代码和配置进行比较后,项目中似乎没有错误,因此 OP 尝试创建一个新的 .net 5 项目,这一次一切都表现得很好。也许它可以作为类似问题的提示,即更改项目框架的版本。
================================================ ====
谷歌错误消息我真的发现高投票的答案要求清除 Nuget 缓存,但正如你所说,它不起作用。恐怕我需要您的帮助,您可以检查一下您和我之间的差异在哪里,因为它对我有用。顺便说一句,使用v3.1.18 Microsoft.EntityFrameworkCore.SqlServer 也对我有用,所以我猜这可能是您的 Visual Studio 客户端造成的。您可以重新安装客户端。
我新建了一个asp.net core 3.1 api项目,并安装了ef:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="5.0.9" />
</ItemGroup>
</Project>
在启动时,我修改了我的 ConfigureService 方法:
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
services.AddDbContext<LocaldbContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("Localtest")));
}
这是一个测试控制器:
using WebApplication1.Data;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using System;
using System.Linq;
using System.Threading.Tasks;
namespace WebApplication1.Controllers
{
public class LocaldbController : Controller
{
private readonly LocaldbContext _context;
public LocaldbController(LocaldbContext context)
{
_context = context;
}
[HttpGet("/getUser")]
public async Task<IActionResult> Index(string searchString)
{
var users = from m in _context.user
select m;
if (!String.IsNullOrEmpty(searchString))
{
users = users.Where(s => s.user_name.Contains(searchString));
}
return Ok(await users.ToListAsync());
}
}
}
和 Dbcontext 文件:
using WebApplication1.Models;
using Microsoft.EntityFrameworkCore;
namespace WebApplication1.Data
{
public class LocaldbContext: DbContext
{
public LocaldbContext(DbContextOptions<LocaldbContext> options) : base(options){}
public DbSet<LocalMallUser> user { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<LocalMallUser>().ToTable("MallUser");
}
}
}