Форум программистов, компьютерный форум, киберфорум
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
0 / 0 / 0
Регистрация: 29.10.2016
Сообщений: 7
1

Можно ли вынести классы сгенерированные Entity Framework в отдельную dll?

07.08.2018, 21:44. Показов 1519. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Дорогие форумчане, прошу у вас помощи
Пишу сейчас небольшое клиент-серверное приложение на C#
На сервере установлен MS SQL Server и для доступа к данным использую Entity Framework.
Собственно я столкнулась с одной проблемой и надеюсь на помощь)
Я использую метод DataBase first и Entity Framework создает мне классы на основе моей БД.
Можно ли вынести все эти классы в отдельную dll, чтобы можно было использовать их одновременно на сервере и клиенте?
Эту же базу данных я планирую использовать еще и в ASP.NET приложении. Поэтому не хотелось бы создавать 3 одинаковые версии одних и тех же сущностей.
Будет ли это хорошей идеей и есть ли вообще другие варианты?
Спасибо за помощь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.08.2018, 21:44
Ответы с готовыми решениями:

Entity Framework: Можно ли как то догенерировать классы?
На основе существующей базы сгенерировал code first, но база изменилась в нее добавилось таблиц 20....

Как вынести SQL-запрос в отдельную DLL?
добрый день, помогите пожалуйста. Хочу вынести в dll процедуры но не могу понять как заставить ее...

Как можно вынести код отображения матрицы их процедуры main в отдельную процедуру
Программа готовая. Из этого код программы: Option Base 1 DefInt I-J Sub Main() Const n =...

В чем разница между Entity Framework и Entity Framework Core?
В чем разница (если она есть) между entity framework и entity framework core?

4
Эксперт .NET
12079 / 8388 / 1281
Регистрация: 21.01.2016
Сообщений: 31,601
08.08.2018, 07:29 2
Цитата Сообщение от AnyaZaychnko Посмотреть сообщение
Можно ли вынести все эти классы в отдельную dll, чтобы можно было использовать их одновременно на сервере и клиенте?
Не просто можно, а нужно так делать. Причём очень желательно сами классы сущностей держать в одной сборке, а класс контекста и мапинга в другой. Так можно будет весь уровень работы с данными переиспользовать (если надо).

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

Цитата Сообщение от AnyaZaychnko Посмотреть сообщение
чтобы можно было использовать их одновременно на сервере и клиенте?
Учтите, что клиенту данные могут понадобиться не в том виде, в каком они храняться в базе и представлены в модели данных Entity Framework. Разница может быть как в типе полей, их количестве и содержимом. К примеру, у вас может быть таблица пользователей, где хранятся отдельно поля под ФИО и поле даты рождения, но клиенту, в каком-то сценарии, может понадобиться ФИО слитое в одну строку через пробелы и возраст числом (не дата рождения). Оригинальный класс таблицы пользователей уже не подойдёт.

Поэтому настоятельно рекомендуется завести ещё один проект, чисто под классы, для обмена данными между клиентом и сервером.
1
0 / 0 / 0
Регистрация: 29.10.2016
Сообщений: 7
08.08.2018, 10:02  [ТС] 3
Спасибо за ответ.
Но у меня теперь появились немного другие вопросы.
Если я создам отдельную dll с сущностями, которые точно будут и на стороне сервера и на стороне клиента( будут иметь одинаковый вид, набор полей и методов). А уже потом наследоваться от этих классов и расширять их функционал отдельно для сервера и отдельно для клиента? Я мыслю в правильном направлении или сильно заблуждаюсь?
Если я так сделаю, то как мне это объединить с Entity Framework и не будет ли потерян смысл использования этого фреймворка?
Спасибо)
0
Эксперт .NET
12079 / 8388 / 1281
Регистрация: 21.01.2016
Сообщений: 31,601
08.08.2018, 10:10 4
Лучший ответ Сообщение было отмечено AnyaZaychnko как решение

Решение

Цитата Сообщение от AnyaZaychnko Посмотреть сообщение
А уже потом наследоваться от этих классов и расширять их функционал отдельно для сервера и отдельно для клиента? Я мыслю в правильном направлении или сильно заблуждаюсь?
Не надо так делать. У класса всегда должно быть одно назначение, один сценарий использования. Я же в посте выше чётко описал, что делать в такой ситуации: заводить отдельный класс, который данные будет хранить в более подходящем для сценария использования формате. Не надо городить иерархии наследования, это всё захламит.

Если класс из модели EF не будет подходить для каких-то сценариев, то смело заводите более удобный класс. Данные между такими классами можно смело переносить (или руками или через Automapper). И сам EF умеет считывать данные в классы не входящие в его модель. Т.е. если в каком-то сценарии вам понадобится только пара полей из таблицы, то не обязательно считывать вообще всё, чтобы взять подмножество, можно считать только нужное в более подходящий меньший класс через Select().

И копипасты не бойтесь. Не будет ничего страшного, если у вас будут классы с похожими наборами полей. Не надо маниакально стремиться переиспользовать классы в ситуациях, когда они неудобны. И не надо раздувать содержимое класса ради разных сценариев использования. Это и наследования касается.
1
0 / 0 / 0
Регистрация: 29.10.2016
Сообщений: 7
08.08.2018, 10:19  [ТС] 5
Спасибо большое за ответ)
0
08.08.2018, 10:19
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.08.2018, 10:19
Помогаю со студенческими работами здесь

Можно ли количественно отобразить процесс загрузки таблицы БД в DbSet (Entity Framework) ?
Есть БД. При загрузке таблицы программа зависает. Чтобы отобразить прогресс загрузки в программе,...

Можно ли как-то динамически сгенерировать функцию для поиска записей в Entity Framework?
Привет! Есть сущность (таблица) User, у которой есть свойства SkypeId и TelegramId. На самом...

Entity Framework. Удаление entity без удаления связей
Вечер добрый. Есть модель Coder First. Каскадное удаление запрещено. Удаление произвожу так: ...

Вынести суммирование в отдельную функцию
Ребят, подскажите как сделать тут функцию и от минуса уйти, никак не могу понять: #include...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru