首页 > 解决方案 > 如何将 ColumnAttribute 与 Translate 结合使用在 EF6 中?

问题描述

我正在尝试将来自 SP 的响应映射到为特定 SP 自定义的相应模型。SP 使用了我不想在代码中的任何地方看到的列名,因为它们违反了所有标准(甚至拼写错误)。

所以,我尝试创建一个像这样的模型。

public sealed class Product
{
     [Column("Id_PRODUCT")]
     public int Id {get; set;}

     [Column("PruductTilte")]
     public string Title {get; set;}

     // Column Name = Description
     public string Description {get; set;}
}

然后在部分上下文中

public partial class ContosoContext
{
    public async Task<Product[]> GetProductsAsync()
    {
         using (var cmd = Database.Connection.CreateCommand())
         {
             cmd.CommandText = "GeTpRoDuCtS";

             using (var reader = await cmd.ExecuteReaderAsync(CommandBehavior.CloseConnection))
             {
                 return ((IObjectContextAdapter)this)
                     .ObjectContext
                     .Translate<Product>(reader)
                     .ToArray();

                 // Actually calling reader.NextResult() and doing more translates here (multi-set response). 
             }
         }
    }
}

var products = await new Context().GetProductsAsync()Description设置执行此操作时,EF6 似乎忽略了ColumnAttribute.

这不应该工作吗?有什么好的解决办法吗?

标签: entity-framework-6mapping

解决方案


推荐阅读