【发布时间】:2011-09-15 22:49:59
【问题描述】:
我的 DBA 称他的列名与我们的代码使用表数据的方式不同(例如描述与产品名称)。我想知道我在实体框架中是否有一个复杂的类型,是否可以给属性一个别名?
【问题讨论】:
-
我会说@Ladislav Mrnka 有正确的答案
标签: c# asp.net visual-studio entity-framework
我的 DBA 称他的列名与我们的代码使用表数据的方式不同(例如描述与产品名称)。我想知道我在实体框架中是否有一个复杂的类型,是否可以给属性一个别名?
【问题讨论】:
标签: c# asp.net visual-studio entity-framework
在 Visual Studio 中有一个屏幕/面板调用映射详细信息。默认情况下,当您打开设计器屏幕“EF4”时,它通常在错误列表、输出等附近的底部选项卡中可见。在设计器视图中,当您单击表时,下面的面板将填充列(来自数据库表)和值/属性(来自您的类)。在值/属性中,您可以将名称和类型更改为您想要的类。当 DBA 开始创建垃圾列名或开始在某些地方使用前缀而不在其他地方使用前缀时,我会定期执行此操作。
希望这会有所帮助。
编辑:
如果真的需要,这里是如何更改复杂类型的示例,http://blogs.msdn.com/b/wriju/archive/2010/07/26/ef4-complex-type.aspx
【讨论】:
您是否使用 EntityFramework 代码优先?当您提到复杂类型时,这就是我的想法。如果是这样,如果您提供该信息,它将帮助您获得更好的答案...
如果是这样的话,这里是 ScottGu 在Custom Database Schema Mapping 上的一篇很棒的文章
代码如下所示:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<YourEntityName>().MapSingleType(t => new {
columnId = t.Id,
description = t.ProductName // If database column name is description and your entity property name is ProductName
product_name = t.Description // If it's the other way around...
}).ToTable("DatabaseTableName");
}
【讨论】:
您可以根据需要命名属性并将数据库字段映射到该属性。属性名称不依赖于相关数据库列的名称。
【讨论】: