Linq-to-Sql: добавление условия (где) к столбцу, которого нет в метамодели - PullRequest
0 голосов
/ 22 июля 2010

Я создаю приложение 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.

1 Ответ

0 голосов
/ 22 июля 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...