LazyLoad и ConnectionString - PullRequest
       10

LazyLoad и ConnectionString

1 голос
/ 15 марта 2011

Это что-то вроде копейки за вопрос типа твоих мыслей.

Мы кодируем все наши классы с нуля.Для наших бизнес-экземпляров строка подключения является частью конструктора.Это просто, потому что обычно это единственный параметр конструктора.Когда мы загружаем запись из базы данных и сохраняем ее в объекте сущности ... как мы должны помнить строку подключения?Это для ленивых целей.Поскольку мы можем говорить с более чем одним экземпляром базы данных одного и того же базового типа базы данных.Нам нужно знать, откуда мы получили запись, и знать, где можно лениво загружать связанные объекты.

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

Устанавливаем ли мы строку подключения в каждом конструкторе как строку, чтобы попытаться принудительно установить ее?Сохраняем ли мы ссылку на бизнес-объект, который загрузил сущность.Между тем, мы также думаем, что нам нужно иметь пустой конструктор при десериализации из xml для некоторых случаев.

Не сталкивался с этим, но думал о фабриках.Чтобы получить новый объект сущности, нужно пройти через фабрику, где должна быть доказана строка соединения.

Это не расширенный API, просто команда должна его правильно реализовать и принять.

Некоторые ссылки / примеры кода тоже были бы хороши.Спасибо

1 Ответ

1 голос
/ 15 марта 2011

Это Entity Framework?Вы используете POCO?Можете ли вы воспользоваться встроенными возможностями отложенной загрузки EF?

Для чего стоит спросить у контекста, с какой базой данных он связан:

EntityConnection connection = myContext.Connection as EntityConnection;

if (connection != null)
    string db = connection.StoreConnection.Database;

Это, вероятно, не так уж полезно.

...