gpt4 book ai didi

asp.net-mvc - .NET Core Entity Framework 在作为实体访问时抛出无效的对象名称,但适用于 SQL

转载 作者:行者123 更新时间:2023-12-01 15:01:12 31 4
gpt4 key购买 nike

我正在使用 Entity Framework Core v6.2。我收到一个错误

SqlException: Invalid object name 'Cdef.CellDefinition'

当我尝试直接访问 DbSet,但使用相同的 DbContext 对象时,我可以使用 FromSql 命令直接查询该对象.

我看到其他答案说要修改约定以删除 PluralizingTableNameConvention,但是因为我正在做一个 EntityFrameworkCore.DbContext ModelBuilder 没有该选项,而且我没有看到任何证据表明它试图访问复数名称。

我的实体设置如下:

[Table("Cdef.CellDefinition")]
public partial class CellDefinition
{
[Key]
public int Id { get; set; }
}

我的 DbContext 是这样的:

public class CDefContext : Microsoft.EntityFrameworkCore.DbContext
{
public virtual Microsoft.EntityFrameworkCore.DbSet<CellDefinition> CellDefinition { get; set; }

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
}
}

当我尝试直接访问作为实体的对象时,出现错误:

Invalid Object Name

但如果我使用相同的对象名称发出 SQL,它会正常工作。

// This fails with Invalid Object Name
return cDefContext.CellDefinition.ToList();

// This succeeds
return cDefContext.CellDefinition.FromSql("select * from CDef.CellDefinition").ToList()

最佳答案

我找到了解决方案。您不能将模式放在表名中。

//This Does NOT work
[Table("Cdef.CellDefinition")]
public partial class CellDefinition{}


//But this DOES work
[Table("CellDefinition",Schema = "Cdef")]
public partial class CellDefinition{}

关于asp.net-mvc - .NET Core Entity Framework 在作为实体访问时抛出无效的对象名称,但适用于 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52979403/

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