Linq-to-Sql, использование классов сущностей и родительских / дочерних объектов - PullRequest
0 голосов
/ 14 января 2011

Для моего проекта я использую SqlCE 3.5, Linq2Sql и генерирую классы сущностей (файл dbml) с помощью SqlMetal.

Если я использую расширения классов сущностей в качестве классов бизнес-объектов, как мне поступить с дочерними объектами?

Могу ли я использовать существующий EntitySet (Of ChildClass), который уже находится в файле dbml? Или я должен создать новое свойство коллекции в моем частичном расширении класса, например:

public partial class ParentClass
{
 public List<ChildClass> children { get; set; }
}

Я получил смутное предположение, что EntitySet (Of ChildClass) имеет какой-то тип прямого соединения с полной таблицей базы данных. И что мне, возможно, следует использовать это как чисто объект доступа к данным, а для бизнес-логики я должен оставить этот другой объект коллекции, который может содержать только подмножество таблицы.

Но я не уверен, правильно ли я понял концепцию? Мне действительно нравится знать, как это должно использоваться должным образом ..?


РЕДАКТИРОВАТЬ1:

Одна вещь, которая, возможно, является проблемой производительности для меня, - это когда я связываю мои коллекции объектов с сеткой данных. Некоторые свойства обновляются довольно часто из фида данных фондовой биржи, и мне интересно, если использование EntitySets в качестве коллекции бизнес-уровня делает это медленным. Хотя я не вызываю submitchanges в этих обновлениях . Тем не менее, я не могу прокрутить обзор данных из-за всех обновлений. Может ли это быть из-за использования EntitySets или просто из-за того, что само представление данных обновляется настолько часто, что прокрутка может показаться невозможной?

1 Ответ

0 голосов
/ 14 января 2011

Если вы используете сущности, сгенерированные Дизайнером, которые являются Прокси, а не реальными объектами POCO, вы также можете использовать их ObjectSet для получения дочерних коллекций. Они относятся к типу IQueryable, поэтому до тех пор, пока вы не коснетесь одного из элементов или не воспользуетесь расширением ToList () или .Where () LinQ, EF не будет вызывать базу данных. В любом случае, ЛУЧШАЯ ПРАКТИКА - показать их с помощью IList и использовать репозиторий для заполнения списка. ObjectSet - это не только список, это также своего рода хранилище для сущности.

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