2010-06-29 2 views
2

У меня есть объект пользователя со следующими свойствами, которые отображают на поле в базе данных:Всегда исключить свойство из Entity Framework 4 Query

Id   int 
Username varchar(25) 
Password binary(64) 
Salt  binary(64) 
Name  varchar(50) 
Locked  bit 

То, что я не хочу сделать, это всегда возвращают пароль и Соль для каждый запрос. Но для некоторых запросов я хочу проверить пароль (from u in db.Users where u.Password == password select u) или установить поля «Пароль/соль». Я не хочу, чтобы 128B всегда переходил по проводу, когда он никогда не нужен.

Я попытался настроить свойство getter на приватное, но это помешало мне использовать его в LINQ. В принципе, было бы здорово, если бы я мог установить свойство всегда ленивая загрузка.

ответ

3

Создайте репозиторий пользователей, который использует POCO для хранения Пользователя без полей «Пароль» и «Соль».

Репозиторий обрабатывает Entity Framework и заполняет POCO своими данными.

namespace MyCompany.Data.Repositories 
{ 
    public class User 
    { 
     public int Id { get; set; } 
     public string Username { get; set; } 
     public string Name { get; set; } 
     public bool Locked { get; private set; } 
    } 

    public class UserRepository 
    { 
     public User GetAll() { } 
     public User GetById() { } 

     // Add your check password method here 
    } 
} 
+0

Итак, что происходит с автогенерированным пользовательским классом? – TheCloudlessSky

+0

@TheCloudlessSky - вы используете его в своем классе Repository (и ограничиваете его использование в другом месте). –

+0

Проблема тогда в том, что у меня есть два класса User (хотя и из разных пространств имен). Разве это не громоздко? – TheCloudlessSky