gpt4 book ai didi

c# - 无效的对象名称错误 - EntityFrameworkCore 2.0

转载 作者:行者123 更新时间:2023-11-30 14:22:43 24 4
gpt4 key购买 nike

你好,我遇到了 Entity Framework 的问题,告诉我这些对象在我的数据库中不存在,而我已经使用 .ToTable 方法映射了名称。下面是我如何将上下文注入(inject)我的 Controller :

在 Startup.cs => ConfigureServices

var connection = @"Server={myserver};
Initial Catalog={mydb};Persist Security Info=False;
User ID={myId};Password={mypassword};MultipleActiveResultSets=False;
Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;";

services.AddDbContext<MyContext>(options => options.UseSqlServer(connection));

在 MyController.cs 中

public class MyController : Controller
{
[HttpPost("myroute")]
public async Task<IActionResult> CreateUser([FromBody] MyUser myUser)
{
try
{
var user = _context.MyUser
.Where(y => y.UserName == myUser.UserName)
.FirstOrDefault();

if (user != null)
{
var result = await _signInManager.UserManager.CreateAsync(myUser);

if (result.Succeeded) return Ok();
}
}
catch (Exception ex)
{

_logger.LogError($"Create User Error: {ex}");
}

return BadRequest();
}
}

在 MyContext.cs 中

public class MyContext : DbContext
{
public MyContext(DbContextOptions<MyContext> options)
: base(options)
{

}
public DbSet<MyApi.DataAccess.Entities.MyUser> MyUser { get; set; }

protected override void OnModelCreating(ModelBuilder builder)
{
builder.Entity<MyApi.DataAccess.Entities.MyUser>()
.ToTable("dbo.MyUsers");
}
}

这是我第一次在服务器端代码中进行异步编程,所以它可能在那里?我已经在控制台应用程序中测试了连接字符串,并且能够通过控制台应用程序 (C# .Net) 连接到数据库,所以我假设这不是问题所在(另外,我直接获取了连接字符串来自 Azure)。在此先感谢您的帮助!

最佳答案

在 EF(核心)配置(数据注释和流畅的 API)中,表名与架构分开。

从表名中删除 "dbo." 并使用 ToTable 重载 nameschema参数:

.ToTable("MyUsers", "dbo");

或者考虑到 dbo 是默认架构(如果没有进行不同的配置),只需:

.ToTable("MyUsers");

目前,它认为表 dbo.dbo.MyUsers 当然不存在。

关于c# - 无效的对象名称错误 - EntityFrameworkCore 2.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48267925/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com