Joh*_*n P 3 asp.net-mvc entity-framework entity-framework-core
我正在使用 Entity Framework Core v6.2。我收到一个错误
SqlException: 无效的对象名称“Cdef.CellDefinition”
当我尝试DbSet直接访问,但使用相同的DbContext对象时,我可以使用FromSql命令直接查询对象。
我见过其他的答案说,修改公约来去除PluralizingTableNameConvention,但是因为我在做EntityFrameworkCore.DbContext的是ModelBuilder没有这样的选择,我没有看到任何证据表明它是试图访问一个多元化的名字。
我的实体设置如下:
[Table("Cdef.CellDefinition")]
public partial class CellDefinition
{
[Key]
public int Id { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
而我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);
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试直接将对象作为实体访问时,出现错误:
无效的对象名称
但是如果我使用相同的对象名称发出 SQL,它就可以正常工作。
// This fails with Invalid Object Name
return cDefContext.CellDefinition.ToList();
// This succeeds
return cDefContext.CellDefinition.FromSql("select * from CDef.CellDefinition").ToList()
Run Code Online (Sandbox Code Playgroud)
我找到了解决方案。您不能将架构放在表名中。
//This Does NOT work
[Table("Cdef.CellDefinition")]
public partial class CellDefinition{}
//But this DOES work
[Table("CellDefinition",Schema = "Cdef")]
public partial class CellDefinition{}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2388 次 |
| 最近记录: |