【问题标题】:Entity Framework database first, same table and column name mappingEntity Framework 数据库优先,同表同列名映射
【发布时间】: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();

但它不够灵活和优雅。 有没有办法说实体框架在从数据库生成模型时不更改列名?

【问题讨论】:

  • 尝试手动更改名称:stackoverflow.com/questions/20780489/…
  • 不幸的是:在这种情况下,名称 Site 不能重复。请选择其他名称。
  • 我认为没有办法做到这一点。使用 SqlQuery 时,您应该了解属性名称(在实体类型中)和列名称(在数据库表中)。这就是我们很少需要使用 SqlQuery 的原因。

标签: c# .net entity-framework ef-database-first


【解决方案1】:

试试这样的:

public partial class Site
{
    [Column("Site1")]
    public string Site1 { get; set; }

}

我注意到你的类是部分的,你确定你没有实体模型的映射类吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-13
    • 2015-12-04
    • 1970-01-01
    • 1970-01-01
    • 2013-09-23
    • 1970-01-01
    • 2016-03-31
    • 2020-02-29
    相关资源
    最近更新 更多