Использование одних и тех же созданных базой данных объектов EF в нескольких проектах - PullRequest
0 голосов
/ 07 ноября 2019

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

Текущее состояние:

  • Настольное WPF-приложение Windows, один проект в одном решении
  • В проекте установлен пакет EntityFramework 6.3 , установленный в NuGet
  • SQL Server Express , работающий на том же ноутбуке
  • База данных была разработана непосредственно в SSMS и преобразована в POCOs посредством следующего процесса: Add -> New Item -> Data -> ADO.NET Entity Data Model -> Code First from Database -> Choose connection string -> Choose database objects. Это создает файл .edmx с некоторыми другими файлами под ним, включая файл .tt, который я могу развернуть, чтобы увидеть все мои объекты
  • В редких случаях, когда мне нужно изменить базу данных, я делаю это в SSMS, а затем снова выполните описанный выше процесс для обновления объектов в приложении

Это приложение работает хорошо. Но я хотел бы отделить базу данных, чтобы она могла работать на другом компьютере, либо у меня дома, либо в облаке, чтобы я мог писать веб-или мобильные клиенты, которые используют ту же базу данных, из другого места. Однако я не могу понять, как удалить только часть базы данных из моего приложения WPF, не создавая других проблем.

Я представляю ситуацию, когда база данных работает на компьютере с веб-службой RESTful. сидит поверх него, и исходное приложение модифицируется для доступа к веб-службе, а не напрямую к БД.

Так что, возможно, сам проект веб-службы - это то место, где я бы использовал EF6 чтобы получить доступ к базе данных и преобразовать ее в сущности, чтобы я мог получать сущности через веб-сервис и вставлять / обновлять их в базе данных. Это имеет смысл.

В этом случае исходному приложению WPF больше не нужно будет устанавливать EF6 или какие-либо строки подключения или что-либо связанное с базой данных, но ему все равно нужно будет знать обо всех объектах, которые имеютбыл сгенерирован из базы данных, потому что ему все равно придется создавать эти объекты для отправки их при вызове веб-службы.

Так что я могу создать entities из базы данных в проекте, а затем скопировать тот же entities в другой проект? Это похоже на дублирование кода. Если бы я изменил БД, мне пришлось бы обновлять entities отдельно в каждом проекте. Или я делаю проект "entities", к которому я получаю доступ от других с помощью директивы "using"? Или сделать библиотеку классов .dll? Я предполагаю, что один из последних подойдет, но я немного растерялся, как к этому подойти. Или, может быть, это требует более глубокого переосмысления?

1 Ответ

0 голосов
/ 07 ноября 2019

Если я правильно понял ...

Вы можете создать ссылки на модели в отдельной библиотеке классов и использовать эту библиотеку в качестве ссылки в вашем WPF или где угодно, просто имейте в виду, что соединение произойдетгде программа работает как ваш wpfApp или webapi, поэтому вы должны поместить все параметры конфигурации в «точку входа».

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