2012-04-16 4 views
2

Я пытаюсь сделать это: сначала я использую код EF для сопоставления старой существующей базы данных. Существует много полей с неправильным типом (ex: char (1), который используется как boolean), поэтому я создал класс-оболочку для моего контекста db, который отлично сопоставляется с таблицей базы данных. Теперь я хочу выставить тип IQueryable моего объекта Entity в моем репозитории. Смотрите мой пример:Преобразование IQueryable <T> в IQueryable <Y>

public class MyContext:DbContext 
{ 
    public DbSet<WrappedEntity> WrapperEntities; 
} 

public class Repository 
{ 
    private MyContext _context; 

    //contructors omitted 

    public IQueryable<Entity> GetEntities() 
    { 
     return _context.WrapperEntities; //doesn't compile, I need some convertion here 
    } 
} 

У меня уже есть Convertion рутина, единственное, что отсутствует способ запроса мой DbContext думал мой репозиторий, не подвергая класс WrappedEntity, Можно ли и как?

Спасибо.

+3

Я запутался, вы создали тип WrappedEntity, чтобы исправить некоторые неудачное схематичное решение в базе данных, но тогда вы не» t хотите разоблачить это? Я читаю вас правильно? –

+0

Точно. Я хочу «скрыть» от потребителя моего репозитория реальную структуру моей базы данных. –

ответ

1

Обычно проецировать с Queryable.Select изменить тип запроса ...

public IQueryable<Entity> GetEntities() 
{ 
    return _context.WrapperEntities.Select(x => new Entity(){...}); 
} 
+0

Ближе всего к тому, что мне нужно, но я понял, что то, что я хотел, было не лучшим способом решить мою проблему. Спасибо за вашу помощь. –

Смежные вопросы