我想用c#获取一些数据库数据。但是我的LINQ查询连接了无效的数据库表。
DataContext.cs
namespace BlackBoxSOS.Models
{
public class DataContext : DbContext
{
public DbSet<ServiceIdentification> ServiceIdentifications { get; set; }
public DbSet<ObservationDatum> ObservationData { get; set; }
....
}
}
Function In Service.svc.cs
public GetObservationResponseTypeMessage GetObservation(GetObservationTypeMessage request)
{
DataContext dataContext = new DataContext();
var result = dataContext.ObservationData;
....
return ...;
}
变量结果为"SELECT [Extent1]"。[Id] AS [Id], [Extent1]。[Res_Value] AS [Res_Value]从[dbo]。[ObservationDatums] AS [Extent1]"当执行我的代码时。但是DataContext有DbSet ObservationData,而不是ObservationDatums。
为什么这个程序有错误?我怎样才能修好它?
您可以首先通过将table属性应用到ObservationDatum类型或使用Fluent API(在DbContext中重写OnModelCreating)来定制实体框架代码使用的表名。
例如:
[Table("ObservationData")]
public class ObservationDatum
{
}
或:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<ObservationDatum>().ToTable("ObservationData");
}
如果所有表名都是单数,可以尝试在DbContext中使用以下代码禁用表名的复数化:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}