实体框架中复杂类型属性名称的别名

本文关键字:别名 属性 类型 框架 复杂 实体 | 更新日期: 2023-09-27 17:59:10

我的DBA调用他的列名与我们的代码使用表数据的方式不同(例如描述与产品名称)。我想知道,如果实体框架中有一个复杂的类型,是否可以为属性提供别名?

实体框架中复杂类型属性名称的别名

您可以根据需要命名属性,只需将数据库字段映射到该属性即可。属性的名称不依赖于相关数据库列的名称。

是否使用EntityFramework Code First?当你提到复杂类型时,我就是这么想的。如果是这样的话,如果你提供了这些信息,这将帮助你得到更好的答案。。。

如果是这样的话,这里是ScottGu关于自定义数据库模式映射的一篇很棒的文章

代码看起来像这样:

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");
}

在Visual Studio中,有一个屏幕/面板调用Mapping Details。默认情况下,当设计器屏幕打开"EF4"时,它通常在错误列表、输出等附近的底部选项卡上可见。在设计器视图中,当您单击表时,下面的面板将填充列(来自数据库表)和值/属性(来自类)。在"值/属性"中,您可以将类的名称和类型更改为所需的任何类型。当DBA开始创建垃圾列名,或者开始在某些地方使用前缀而不是在其他地方使用前缀时,我会定期这样做。

希望这能有所帮助。

编辑:

这里的例子是,如果真的需要,如何更改复杂类型,http://blogs.msdn.com/b/wriju/archive/2010/07/26/ef4-complex-type.aspx