Агрегация между сборками в C # - PullRequest
0 голосов
/ 23 декабря 2010

У меня есть решение .NET с 4 проектами библиотек, в результате чего получается 4 сборки.

В этих сборках есть классы, которые генерируют некоторую частичную информацию в линейном рабочем процессе.Под информацией = сгенерированный я подразумеваю некоторую информацию бизнес-логики, включая метку времени, количество записей и т. Д. Последняя таблица, в которую должна быть вставлена ​​эта информация, содержит 16 столбцов ... каждая из этих сборок имеет регистрируемую информацию только для 4 столбцов.Моя цель - собрать всю эту информацию и записать ее в базу данных за один вызов БД ... вместо того, чтобы делать это 4 раза.

Чтобы быть более понятным, класс в пространстве имен A, который (пространство имен / сборкаA импортирует / использует B и C) ... экземпляр класса внутри B и C. соответственно.

У меня нет доступа к информации, сгенерированной в методах внутри классов B и C в классе в namespaceA.Но я хочу собрать всю информацию и отправить ее в базу данных за одну вставку.

Как мне решить эту проблему?Я хочу сохранить данные во всех этих различных сборках и записать данные в базу данных за один вызов. Как я могу сохранить данные?

Ответы [ 3 ]

1 голос
/ 23 декабря 2010

Если вы хотите вставить данные, созданные классами A, B и C одновременно, то что-то должно иметь возможность доступа ко всем этим данным в точке вставки.

Если, как вы говорите, B и C недоступны для A, рассматривали ли вы отдельный класс (например, в его собственной сборке), который занимается только постоянством?

Такой класс может ссылаться на A, B и C, извлекать данные из каждого (предполагая, что они предоставляют свои данные, каким-то образом ... если нет, я понятия не имею, как вы выполните то, что вы ищете), собрать эти данные и вставить их.

Таким образом, A, B и C остаются в неведении друг о друге и о классе, который сохраняет свои данные.

1 голос
/ 23 декабря 2010

Если я понимаю, о чем вы спрашиваете, тогда это не имеет смысла.

Если у вас есть отдельные классы, генерирующие данные, которые должны регистрироваться, то эти отдельные классы должны регистрировать данные.Ни один другой класс не должен знать, какие данные отдельные классы находят интересными.

Позвольте вашей структуре ведения журналов иметь дело с объединением данных регистрации в соответствующее количество вызовов базы данных.Это деталь реализации каркаса ведения журнала.

0 голосов
/ 23 декабря 2010

Насколько я могу интерпретировать вопрос, я подозреваю, что вам может пригодиться класс агрегатора ( Параметр сбора или даже более сложный Посетитель ), который посещает каждый класс, генерирующий информацию, компилирует данные и затем может в конечном итоге попросить опубликовать скомпилированные данные в другом месте.

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