Я создаю приложение ASP.Net MVC2 поверх устаревшей базы данных.Каждая таблица в базе данных содержит идентификатор, который определяет, к какой организации она принадлежит.Например:
| id | name | org_id |
| 1 | John | 4 |
| 2 | Joe | 4 |
| 3 | Anne | 2 |
Теперь пользователь "Джон" не должен видеть Энн из другой организации, например, извлекать эту строку из базы данных.Моя модель будет выглядеть примерно так:
[Table(Name="person")]
public class Person
[Column] public int id { get; set; }
[Column] public string name { get; set; }
org_id не включен в модель, потому что в этом смысле она действительно не является моделью предметной области.Это просто для фильтрации результатов (и, в конечном итоге, каскадная организация удаляет в базе данных).
У меня есть класс репозитория, который возвращает IQueryable<Person>
с использованием DataContext.GetTable<Person>
и, таким образом, включает отложенную загрузку.
Как я могу вставить в этот IQueryable
или в DataContext
пользовательское предложение Where, для которого org_id
должно быть равно 4. Запись
return (new DataContext(connectionString)).GetTable<CardBase>().Where(x => x.NOORGIDHERE...
приводит к фильтрации только по свойствам из класса Person.