Как лениво загрузить единственное свойство в сущности Linq? - PullRequest
2 голосов
/ 20 ноября 2008

Я вручную пишу Linq для объектов SQL и имею большой столбец XML, который я не хочу загружать каждый раз при загрузке этого объекта, так как он редко используется. Везде, где я ищу, я вижу, что дизайнер Linq to SQL предоставляет свойство «Delay Loaded», но класс ColumnAttribute не имеет никаких подсказок относительно того, как это реализовано.

Я понял, что это связано с классом System.Data.Linq.Link, но я не нашел магического заклинания, чтобы заставить его работать.

Кто-нибудь знает, как реализовать свойство с отложенной загрузкой в ​​классе Linq для SQL C #, написанном вручную?

1 Ответ

3 голосов
/ 20 ноября 2008

Я проанализировал результаты сгенерированного кода дизайнера.

Шаг 1. Создайте приватного участника, используя тип System.Data.Linq.Link:

private System.Data.Linq.Link<String> _columnName;

Шаг 2. Задайте для параметра Storage атрибута Column имя этого члена и заполните свойства getter и setters:

[Column(Name = "column_name", Storage = "_columnName"...]
public String ColumnName 
{
    get
    {
        return _columnName.Value;
    }
    set
    {
        _columnName.Value = value;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...