Query Using Entity Framework Error with Database Table name Error
Posted
技术标签:
【中文标题】Query Using Entity Framework Error with Database Table name Error【英文标题】: 【发布时间】:2014-03-24 05:10:12 【问题描述】:我想在 C# 中获取一些数据库数据。 但是我的 LINQ Query 连接的数据库表无效。
DataContext.cs
namespace BlackBoxSOS.Models
public class DataContext : DbContext
public DbSet<ServiceIdentification> ServiceIdentifications get; set;
public DbSet<ObservationDatum> ObservationData get; set;
....
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] FROM [dbo].[ObservationDatums] AS [Extent1]" 执行我的代码时。但 DataContext 有 DbSet ObservationData,而不是 ObservationDatums。
为什么这个程序有错误?我该如何解决?
【问题讨论】:
【参考方案1】:您可以通过将表属性应用到 ObservationDatum 类型,或使用 Fluent API(覆盖 DbContext 中的 OnModelCreating)来自定义实体框架代码使用的表名。
例如:
[Table("ObservationData")]
public class ObservationDatum
或者:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
modelBuilder.Entity<ObservationDatum>().ToTable("ObservationData");
【讨论】:
我更改了您建议我的代码。但是,运行Update-Databse -ConnectionStringName MyConnection
得到错误Either the parameter @objname is ambiguous or the claimed @objtype (COLUMN) is wrong.
我不知道我错过了什么。
如果您要更改代码优先模型,那么您需要运行 Add-Migration 来构建更改,然后更新数据库,除非您已删除并重新创建了数据库。【参考方案2】:
如果您的所有表名都是单数,您可以尝试在 DbContext 中使用以下代码禁用表名复数:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
【讨论】:
感谢您的建议。但是数据库表名是 ObservationData。以上是关于Query Using Entity Framework Error with Database Table name Error的主要内容,如果未能解决你的问题,请参考以下文章
调用未定义的方法 Cake\ORM\Entity::query() CakePhp
在spring data jpa中通过@Query更新Entity内部的关联对象
Linq Entry(entity.Related).Query.Load() 没有写回 Collection 属性
Entity Framework :Using Transaction Scope 如何检查 DbContext 是不是有事务?
query.setResultTransformer(Transformers)和query.setResultTransformer(CriteriaSpecification)
远程服务器返回意外响应:(413) Request Entity Too Large exception when using custom binding