2017-02-09 3 views
0

Мы работаем над набором приложений в нашей компании. Каждое приложение имеет различную бизнес-логику, но имеет несколько структур. Например, одно приложение предназначено для «ИТ-услуг», а другое - для «системы обработки пакетов» среди разных зданий компании. Мы хотим создать каждое приложение с отдельными проектами asp.net mvc (Entity framework Code-First). Но проблема в том, что все приложения имеют несколько подобных объектов. Например, все они имеют People, Buildings и Floors Объекты в их dbContext. а также некоторые другие таблицы, которые имеют отношения к этим аналогичным таблицам. Каков наилучший подход к разработке этих приложений?Лучший подход для общих объектов (таблиц) среди множества приложений

  1. Создать единую базу данных для всех приложений? что такое побочные эффекты?
  2. Создайте отдельную базу данных для каждого приложения и дублируйте аналогичные таблицы? (в настоящее время мы работаем над этим, но мы должны написать некоторые задания SQL-сервера, чтобы всегда синхронизировать эти таблицы, поэтому я не думаю, что это хороший подход)
  3. Создайте базу данных для общих таблиц и других баз данных для каждого приложения. Это приведет к потере отношений между таблицами, а также созданию приложений с несколькими контурами (я предпочитаю это, но я читал, что с помощью Code-First EF и linq невозможно запросить множественные контексты)
  4. или что-то еще?
+0

Что вы делаете, просят кого-то сделать для вас тяжелую работу. Что вы уже пробовали? Можете ли вы дать ответы на свои вопросы? также, если код разделяет сущности, вы можете просто создать отдельный проект, скомпилировать его.dll и поделиться им между проектами. – Stralos

+1

Действительно ли «Люди», «Здания» и «Полы» фактически являются одними и теми же данными? т. е. может ли строка в «ITServices.People» ссылаться на того же человека, что и в «PackageHandling.People»? Если это так, я не вижу, как № 2 является разумным подходом. Кроме того, ваше решение №3 может иметь ссылочную целостность и не требует множественных контекстов, если ваша система базы данных поддерживает синонимы. В этом случае он будет функционально очень похож на # 1. И вам нужно будет разработать правильный механизм блокировки для общих таблиц. –

+0

спасибо @ setphen.vakil. Я работаю над идеями синонимов – iamnapo

ответ

0

Я очень интересен для системы управления Db. Сначала мне нравится ваш 3 aproach. Все они имеют разные преимущества и недостатки. Если у вас есть огромные данные в этом db, вы можете использовать отдельную базу данных, например, как решение, например 2. Но вам нужно разработать механизм синхронизации, который вы сказали. Если мы посмотрим на другое преимущество отдельного db, что когда один db потерпит неудачу или сломается, другой db может работать :), но некоторые из данных департамента могут быть недоступны до тех пор, пока ошибка не будет исправлена. Это может быть полезно для огромных систем.

Lastyly, «Создать базу данных для общих таблиц и баз данных, другой для каждого приложения», эта идея настолько хороша :)

Может вы можете использовать N-Tier artitecture по крайней мере, 3 уровня (бизнес-презентация-Data) и

Busines ==> Ваши функции Worker

Уровень данных ==> Многие Db Контекст

Презентация ==> проект MVC

Я думаю, что решение 3 и Lose Coupling Connection с N-Tier Artch - лучший способ.

Наконец, вы можете проследить; единицы работы, Ninject Freamwork, темы N-Tier

Примечание: Alwasy код-первый :) Мне нравится Code Первый стиль много: D

Хорошего дня :)

Если вы хочу, чтобы я мог показать несколько элементов N-Tier. Урок Link вокруг «CodeProject.com» и Stackoverflow

Смежные вопросы