Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > передача данных из одного проекта в другой


Автор: IGV 21.7.2009, 11:05
Имеется два проекта, назовем их Logic и DB
Logic - отвечает за логику приложения (в нем определен класс Person)
DB - отвечает за связь c базой данных.

Проект DB добавлен в reference в Logic. 

Необходимо передать в базу данных поля класса Person. Но в DB ничего не известно об этом классе. Как лучше всего передавать эти данные? 
Может создать новый класс в DB, экземпляр которого и передавать из Logic?

Автор: mr.Anderson 21.7.2009, 11:20
Наоборот. Добавь референс на Logic в Db. И в методе, который должен принимать класс Person, так и передавай его.
Код

public void MyMethod(Person person)
{
    ...
}

И если Logic и Db находятся в разных пространствах имен, дополнительно в Logic придется использовать пространство, где находится класс Person, через директиву using.

Автор: mihryak 21.7.2009, 11:25
всё зависит от задачи в целом, универсального правильного решения нет
в твоём случае нередко используются http://martinfowler.com/eaaCatalog/dataTransferObject.html, у тебя они будут определены в DB
возможно, будет приемлимо и напрямую использовать доменные классы в обеих сборках, тогда их придётся вынести в ещё одну, общую для всех сборку (это также применимо и для DTO)
 

Автор: IGV 21.7.2009, 11:35
mr.Anderson, 
а как я буду обращаться к методу из DB, если учесть, что Logic  фактически является ядром приложения?

mihryak, 
да, думаю в моем случае лучше всего вынести класс Person  в новую сборку. Спасибо.

Автор: mihryak 21.7.2009, 11:57
Цитата(mr.Anderson @  21.7.2009,  12:20 Найти цитируемый пост)
Наоборот. Добавь референс на Logic в Db. И в методе, который должен принимать класс Person, так и передавай его.

это неправильно, конечные сборки (работающие с внешними источниками данных - будь то БД, файлы, веб-сервисы и т.п.) всегда стоит делать максимально независимыми от других и с минимальной логикой (т.е. достаточной только для собственного функционирования)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)