2013-07-01 3 views
2

Я разработал сайты с php в прошлом, и теперь я решил изучить ASP.NET MVC, так как я нахожу свое собственное кодирование большого количества C# для настольных приложений.ASP.NET MVC Использование базы данных

Проблема, с которой я столкнулась, заключается в том, что я использую подключение к SQL-серверу через функции и пользовательские команды SQL. Из того, что я понимаю, что вы не должны делать то же самое с MVC, скорее используйте Entity Framework (DbContext) для синхронизации данных между базой данных и моделями. Возможно, я не полностью понимаю логику этого, но я чувствую, что это пустая трата ресурсов.

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

Может кто-нибудь, пожалуйста, лучше понять, почему я должен использовать Entity Framework?

Благодаря

+0

Ну, если вы хотите быстро скопировать медленное приложение, то вы должны использовать EF. Если вы хотите написать приложение с большим количеством усилий, чем вы можете посмотреть на dapper.net или handcoded 'SqlCommand'. Использование MVC не ограничивает вас каким-либо способом доступа к данным. – Anri

ответ

3

ASP.NET MVC полностью независим от доступа к базе данных любого вида; вы можете выбрать то, что хотите использовать. Многие учебники будут использовать Entity Framework, однако, в основном потому, что он новый и он прост в использовании.

Entity Framework несколько упрощает доступ к данным, сопоставляя ваши таблицы SQL со стандартными классами C#. Если вы используете EF Code-First, вы даже можете сделать это, определив эти классы на C#, и пусть Entity Framework настроит вашу базу данных, чтобы вам никогда не приходилось касаться SQL. Затем, поскольку ваша база данных и таблицы в ней отображаются как классы C#, вы можете добавлять, запрашивать, обновлять и удалять записи в своей базе данных из кода C#. Основные преимущества:

  • Вся ваша логика в одном месте на одном языке. Это включает в себя определение ваших типов/таблиц, запрос, вставку и обновление, все. Это упрощает запись, упрощает отладку и упрощает управление всеми элементами управления версиями.
  • Ваши объекты базы данных являются «обычными старыми объектами CLR» (POCOs). Это означает, что вы можете поместить их в List<T>, вы можете дать им конструкторы для выполнения пользовательской инициализации, вы можете использовать наследование для упрощения своей структуры, уточнения их отношений и использования полиморфизма в своем коде ... вы можете делать все, что вы можете сделать с обычным классом C#, никакого преобразования или преобразования не требуется.
  • Вы можете использовать C# запрос синтаксис, либо, как это:

    from x in table1 
    where x.foo == bar 
    select x.thing 
    

    или как это:

    db.table1.x.Where(x => x.foo == bar).Select(x => x.thing); 
    

    Оба дают вам время компиляции типа проверки и IntelliSense автозавершение, и оба будут генерировать эквивалентный SQL и отправлять запрос только в базу данных, когда вы делаете что-то, что нужно для получения фактических результатов, например .ToList().

  • Класс Entity Framework DbContext действует как моментальный снимок базы данных, применяя любые изменения обратно к базе данных при вызове .SaveChanges(). Это упрощает использование транзакционного доступа и шаблона единицы работы, что в основном означает, что если что-то пойдет не так в середине операции, вы можете отказаться от всего набора изменений и знать, что ваша база данных не была испорчена полузаполненная задача.

Есть недостатки, в основном связанные с исполнением наказания в виде моментальных снимков и держать их в синхронизации, а также накладные расходы преобразования C# в SQL (а иногда это займет больше, чем нужно в память и сделать операций, но этого обычно можно избежать с хорошо написанным запросом), но во многих случаях вы не заметите разницы, если ваша база данных не огромна. Для тех, кто новичок в ASP.NET MVC, я бы определенно рекомендовал Entity Framework для доступа к базе данных; это избавит вас от хлопот и позволит вам сосредоточиться на логике.

+0

Вы рекомендуете сайт, где я могу узнать больше об EF? – Radar5000

+0

Всегда есть [MSDN] (http://msdn.microsoft.com/en-gb/data/ef.aspx); оттуда вы можете перейти по ссылке [Get Started] (http://msdn.microsoft.com/en-gb/data/ee712907) на страницу, полную руководств и пошаговых инструкций. Я бы посоветовал вам начать с [Which Workflow] (http://msdn.microsoft.com/en-gb/data/jj590134), чтобы изучить различные подходы, а затем для учебного проекта, который я рекомендую начинать с кода- первый. Для того, чтобы сосредоточиться на использовании EF с ASP.NET MVC, проверьте [эту страницу на www.asp.net] (http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc) и пройти через учебные пособия. – anaximander

0

Ну, я думаю, что вы собираетесь, чтобы сравнить два подхода, т.е. ORM (Entity Framework) и объекты SQL Plain (Sql команд). Вы должны посмотреть на these answers. Надеюсь, вы выясните свой вопрос.

1

Вы понимаете неправильно. MVC не поддерживает базу данных. Вы можете использовать любую технологию базы данных, которую хотите, и MVC не имеет права говорить об этом.

Да, это правда, что большинство образцов и демонстраций используют Entity Framework, но это потому, что EF делает тривиальным доступ к базе данных за считанные секунды без написания кучи кода шаблона. ORM там, чтобы сопоставить реляционные базы данных с объектами, чтобы лучше соответствовать модели данных объектной модели.

Вы можете использовать дымовые сигналы и несущие голуби, если хотите. Это может занять у вас 10 раз больше, чтобы закончить ваше приложение.