【发布时间】:2015-09-23 13:52:41
【问题描述】:
在我的数据库中,我有一个名为“Site”的表,其中包含“Site”列(请不要问为什么:))
我使用的是数据库优先方法。从数据库更新模型后,我拥有具有属性“Site1”的实体“Site”
public partial class Site
{
...
public string Site1 { get; set; }
...
}
在我开始使用简单选择的 SqlQuery 方法之前,这工作正常:
context.Site.SqlQuery("SELECT * FROM dbo.Site WHERE SiteID IN(2,1)").ToArray();
因此,我收到错误消息:“数据读取器与指定的“aapModel.Site”不兼容。类型的成员“Site1”在数据读取器中没有同名的对应列。'
我找到了一种在查询中更改列名的解决方案:
context.Site.SqlQuery("SELECT Site as Site1 FROM dbo.Site WHERE SiteID IN(2,1)").ToArray();
但它不够灵活和优雅。 有没有办法说实体框架在从数据库生成模型时不更改列名?
【问题讨论】:
-
不幸的是:在这种情况下,名称 Site 不能重复。请选择其他名称。
-
我认为没有办法做到这一点。使用 SqlQuery 时,您应该了解属性名称(在实体类型中)和列名称(在数据库表中)。这就是我们很少需要使用 SqlQuery 的原因。
标签: c# .net entity-framework ef-database-first