В чем преимущество EntityFramework если бд просто можно создать сразу на серваке и згрузить на dategrid нажав на кнопку
Я учусь писать ИС по патерну MVP. Я создал сущности и загрузил их на sql server с помощью EntityFramework
class context:DbContext
{
public context() : base("Connection") { }
public DbSet<FruitStorage> FuitStorages { get; set; }
public DbSet<Sotr> Sotrs { get; set; }
public DbSet<Apple> Apples { get; set; }
public DbSet<Сell> Сells { get; set; }
public DbSet<Сhamber> Сhambers { get; set; }
}
после вывел на DateGrid таким образом так вот вопрос: Зачем делать все эти классы, если можно просто подключить бд и загрузить все на datagrid с помощью кнопки
public Form1()
{
InitializeComponent();
db = new context();
}
context db;
private void фруктохранилищеToolStripMenuItem_Click(object sender, EventArgs e)
{
var fruit = new Form1<FruitStorage>(db.FuitStorages);
fruit.Show();
{
Ответы (1 шт):
Для работы с любыми СУБД нужно знать язык запросов этих СУБД. Например, для реляционных это будет SQL, для NoSql - свои языки.
Entity Framework - это ORM. Так вот ORM позволяют абстрагироваться от конкретных диалектов языков запросов и от знания устройства СУБД. Достаточно знать один язык программирования, например, C#.
На самом деле, без знания языка запросов и внутреннего устройства СУБД результат, в большинстве случаев, будет плачевный, но попытаться стоит...
Entity Framework - это LINQ ORM. Сила ЛИНКа - в композябельности запросов! Why LINQ beats SQL. С его помощью можно на лету составлять запросы в зависимости от некоторых условий. Без LINQ придётся либо конкатенировать строки, либо писать динамический SQL, либо ещё как-то извращаться.
Хотя есть и другие способы составления запросов на лету, как например сделано в (N)Hibernate.
можно создать сразу на серваке
Как именно создаёте на серваке? Вводом DDL-команд: create database ..., create table ...? Для этого нужно знать SQL. EF освобождает кодо-макак от этого.
Возможно, создаёте с помощью некоего дизайнера? Для этого нужно освоить этот дизайнер (что превращает вас в GUI-мартышку).
и загрузить на dategrid нажав на кнопку
Код загрузки откуда взялся? Вероятно, был сгенерирован неким дизайнером/визардом? А если возникнет необходимость отфильтровать данные, как-то изменить, что-то ещё сделать - дизайнер/визард сможет это сделать?
Хм, всю таблицу целиком грузить на клиента? А если там миллионы строк и гигабайты данных? Их нужно отфильтровать, выбрать только нужное. Тут-то LINQ-подобные ORM и проявляют свою мощь.