我的DBA称他的列名与我们的代码使用表数据的方式不同(例如描述与产品名称)。我想知道我是否在实体框架中有一个复杂类型,是否可以为属性提供别名?
答案 0 :(得分:5)
您可以根据需要命名属性,只需将数据库字段映射到该属性即可。属性名称不依赖于相关数据库列的名称。
答案 1 :(得分:3)
您使用的是EntityFramework Code-First吗?当你提到我想到的复杂类型时。如果是这样,如果您提供了这些信息,它将帮助您获得更好的答案......
如果是这种情况,请参阅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");
}
答案 2 :(得分:0)
在Visual Studio中,有一个屏幕/面板调用映射详细信息。默认情况下,当设计器屏幕打开“EF4”时,它通常在错误列表,输出等附近的底部选项卡中可见。在设计器视图中,当您单击表格时,下面的面板将填充列(来自数据库表)和值/属性(来自您的类)。在值/属性中,您可以将名称和类型更改为您想要的类。当DBA开始创建垃圾列名称或在某些地方而不是在其他地方开始使用前缀时,我会定期执行此操作。
希望这有帮助。
编辑:
此处示例如何在需要时更改复杂类型http://blogs.msdn.com/b/wriju/archive/2010/07/26/ef4-complex-type.aspx