Динамический перевод, чтобы избежать синтаксических ошибок C #

Рассмотрим следующую таблицу базы данных (SQL Server 2005). Я хотел бы использовать это в EF (v6, .net 4.5.1) с функцией Translate, но после поиска кажется, что это не поддерживается.

CREATE TABLE Foo 
(
     pk INT NOT NULL PRIMARY KEY, 
     Foo VARCHAR(100)
)

Использование сопоставления по соглашению, которое создаст классFoo с собственностьюFoo который не поддерживается синтаксисом C #. Я пытался использоватьColumnAttribute:

public partial class Foo
{
    [Key]
    public virtual int pk {get;set;}
    [Column("Foo")]
    public virtual string Name {get;set;}
}

Кажется, это работает, но я бы хотел, чтобы начальный запрос страницы загружал блоки данных через хранимую процедуру и MARS (и использовал общую структуру, чтобы я мог использовать ее на других страницах), поэтому я вызвал хранимую процедуру и прошел по циклу. наборы результатов, вызовObjectContext.Translate через отражение (аналогично приведенному ниже, но это сокращенно):

var methTranslate = typeof(ObjectContext).GetMethod("Translate", new[] { typeof(DbDataReader), typeof(string), typeof(MergeOption) });

foreach (var className in classNames)
{
    // ...
    var translateGenericMethod = methTranslate.MakeGenericMethod(classType);
    // ...
    reader.NextResult();
    var enumerable = (IEnumerable)translateGenericMethod.Invoke(ObjectContext, 
        new object[] { reader, entitySet.Name, MergeOption.AppendOnly });
}

Отмножественный вещи Я прочитал, сопоставление ColumnAttribute не поддерживается. ОтMSDN:

EF не учитывает сопоставление при создании сущностей с использованием метода Translate. Он просто сопоставит имена столбцов в наборе результатов с именами свойств в ваших классах.

И конечно же, я получаю и ошибку:

Считыватель данных несовместим с указанным «Namespace.Foo». Элемент типа «Имя» не имеет соответствующего столбца в считывателе данных с тем же именем.

Проблема в том, что я не вижу альтернативы или способа указать / намекнуть на отображение. Я мог бы изменить имя класса, но это менее желательно, чем имена свойств.

Любые обходные пути, или любой другой способ динамической загрузки данных без использованияTranslate?

Ответы на вопрос(1)

Ваш ответ на вопрос