2013-09-11 2 views
1

Возможно, у вас есть решение. Прежде всего, его просто мысли мои, но я предполагаю, что мы будем работать в некоторых проблем в будущем: У нас есть businessfacade, который обрабатывает контекст вызова с выражением фильтра, скажем так:LINQ TO Объекты: Обработка включает

List<INDIVIDUAL> IIndividual.GetIndividuals(Expression<Func<INDIVIDUAL, bool>> filterExpression) 
    { 
     List<INDIVIDUAL> result = null; 
     this.FacadeAction(ctx => 
      { 
       result = (filterExpression != null 
           ? ctx.INDIVIDUALs.Where(filterExpression) 
           : ctx.INDIVIDUALs).ToList(); 
       result.StartTracking(); 
      }); 
     return result; 
    } 

Ничего особенного: если есть выражение, получите всех людей с этим фильтром, иначе верните все. Проблема сейчас: я хочу добавить другую таблицу для ОДНОГО случая. Итак, мои мысли: должен быть необязательный параметр, который я могу добавить в таблицы, с которыми я хочу включить. Поэтому мне не нужны функции x для одного и того же entitiyset, но можно динамически добавлять все таблицы, которые я хочу включить.

Как вы думаете, что-то подобное возможно? Это даже имеет смысл? Или лучше назвать фасад для каждого вопроса, который мне нужен?

Спасибо за ваш ответ!

Маттиас Мюллер

ответ

1

Я бы просто позвонить Entity Framework напрямую, каждый раз, когда вы нуждаетесь в базе данных, а затем, используя фасад. В противном случае вы в конечном итоге добавите Order, Take functions в качестве параметров, а ваш маленький метод будет становиться все больше и больше.

Просто интересно, почему вы даже используете фасад? Есть ли какие-то изменения в будущем, когда вы измените свой уровень доступа к данным?

+0

Мы используем функции facadeproxy для webservice. Таким образом, нет прямой возможности доступа к datalayer. Динамически включение таблиц будет отличной возможностью, не так ли? –

+0

Если вы используете веб-службы, почему логика Expression должна поступать от клиента? Разве бизнес-логика не должна оставаться на сервере? – Kye

+0

Да, но мне нужны сущности для загрузки текстовых полей в графическом интерфейсе. Поэтому вместо чтения INDIVIDUAL и COUNTRY я мог бы просто включить СТРАНА в ИНДИВИДУАЛЬНЫЙ. Но я думаю, что это невозможно. –

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