2015-02-24 4 views
2

Я использую Entity Framework 6 в моем проекте ASP.NET MVC, используя первый подход к базе данных ... У меня есть .edmx-файл со всеми ассоциациями таблиц.Entity Framework - Views vs Tables

Теперь разработчики sql не хотят иметь прямых вызовов к таблицам, поэтому они хотели бы, чтобы я использовал представления вместо этого.

Я пытаюсь понять, каковы преимущества использования Views vs Tables?

Кроме того, я боюсь, если я использую Views и применяю все PK и FK в edmx, и я что-то регенерирую, изменения будут потеряны?

Любые мысли об этом, пожалуйста?

+0

Преимущества/компромиссы были бы широкими здесь, это действительно зависит от того, что вам нужно и куда вы направляетесь. Я предполагаю, что вам не разрешено писать какие-либо мнения самостоятельно? Если это так, возможно, вы не сможете использовать EF, как и ожидалось ... – Crono

+0

Я могу создавать виды, но они предпочитают напрямую использовать представления вместо таблиц. я все еще мог бы использовать ef с представлениями, не так ли? – piris

+0

Это более громоздко. В EF отсутствует поддержка поддержки. –

ответ

3

Ваши разработчики SQL - это идиоты. Пожалуйста, не стесняйтесь говорить им об этом. Единственное, что использует представление таблицы, в отличие от использования таблицы напрямую, - это запрет на операции записи. Если это и есть цель, есть лучшие способы добиться этого, делая все так же просто, как просто использование приложения пользователем без прав на запись.

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

Если приложение нуждается в написании (что, откровенно говоря, очень мало приложений, которые этого не делают), то просмотры все равно. Если они действительно обеспокоены тем, что Entity Framework создает записи, они также могут создавать хранимые процедуры для таких задач, как CREATE, UPDATE и т. Д., И вы можете интегрировать эти хранимые процедуры в Entity Framework. Тем не менее, я могу почти заверить вас, что Entity Framework генерирует лучший SQL, чем они могут писать вручную, если не по какой-либо другой причине, кроме того, что он используется и способствовал гораздо большему количеству людей, чем у вас на персонале.

+2

Не то, чтобы я соглашался с этими разработчиками SQL, я нет, но есть https://msdn.microsoft.com/en-us/library/ms191432.aspx и этот https://msdn.microsoft.com/ en-us/library/ms180800.aspx Простая проблема заключается в том, что представления не очень хорошо поддерживаются в EF. –

+0

Ой, это жесткое заявление. Я могу утверждать это. Есть ли какая-либо польза, если взгляды не зависят от структуры таблицы? Значит, мы не зависим от изменения структуры таблицы? – piris

+1

Аргумент здесь: http://stackoverflow.com/questions/4378068/when-to-use-a-view-instead-of-a-table – piris