Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用实体框架查询错误,数据库表名错误_C#_Sql_Linq_Entity Framework - Fatal编程技术网

C# 使用实体框架查询错误,数据库表名错误

C# 使用实体框架查询错误,数据库表名错误,c#,sql,linq,entity-framework,C#,Sql,Linq,Entity Framework,我想用C语言获取一些数据库数据。 但我的LINQ查询连接到无效的数据库表 DataContext.cs namespace BlackBoxSOS.Models { public class DataContext : DbContext { public DbSet<ServiceIdentification> ServiceIdentifications { get; set; } public DbSet<ObservationDatum>

我想用C语言获取一些数据库数据。 但我的LINQ查询连接到无效的数据库表

DataContext.cs

namespace BlackBoxSOS.Models
{
  public class DataContext : DbContext 
  {

    public DbSet<ServiceIdentification> ServiceIdentifications { get; set; }
    public DbSet<ObservationDatum> ObservationData { get; set; }

    ....

  }
}
变量结果是选择[Extent1].[Id]作为[Id],[Extent1].[Res_Value]作为[Res_Value] 在执行我的代码时,从[dbo].[ObservationDatums]作为[Extent1]执行。但是DataContext有DbSet ObservationData,而不是ObservationDatums


为什么这个程序有错误?如何修复它?

您可以通过将表属性应用于ObservationDatum类型,或者通过在DbContext中使用Fluent API重写ModelCreating,首先自定义实体框架代码使用的表名

e、 g:

或:


如果所有表名都是单数的,可以尝试在DbContext中使用以下代码禁用表名多元化:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}

谢谢你的建议。但数据库表名是ObservationData。我更改了您建议的代码。但是,运行Update-database-ConnectionStringName MyConnection会出现错误,可能是参数@objname不明确,或者声明的@objtype列错误。我不知道我错过了什么。如果您要更改代码优先模型,那么您需要运行添加迁移来构建更改,然后更新数据库,除非您删除并重新创建了数据库。
[Table("ObservationData")]
public class ObservationDatum
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<ObservationDatum>().ToTable("ObservationData");
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}