Подтвердить что ты не робот

Лучший способ получить доступ к базе данных SQL Server с помощью С#.Net

Я новичок в .NET и слышал о нескольких различных способах запроса данных SQL Server, таких как ADO.NET и инфраструктура сущности.

Может ли кто-нибудь дать мне несколько советов о лучшем способе поиска новых приложений?

Спасибо за любую помощь или предложения.

4b9b3361

Ответ 1

Вот пример использования EF с генерированием кода из базы данных (для реального приложения, которое вы, вероятно, хотите сгенерировать свою БД из кода):

  • Щелкните правой кнопкой мыши на своем проекте → Добавить → Новый элемент → Модель данных Entity ADO.NET.
  • Выберите имя для своих объектов, то есть MyEntities.edmx, нажмите "Далее"
  • Выберите "Создать из базы данных"
  • Настройте новое соединение, если его уже нет. Далее.
  • Выберите таблицы, представления и SPROC, которые вы хотите включить в объекты. Готово.

Вы увидите файл MyEntities.edmx, добавленный в ваш проект. Вы можете открыть его в режиме проектирования, чтобы увидеть диаграмму ваших сущностей и отношений. Обратите внимание, что каждый объект должен иметь первичный ключ. Самый простой способ сделать это - добавить в каждую таблицу индекс автоматического увеличения, или столбец GUID. В любом случае теперь вы можете запросить свой db следующим образом:

// assuming a "Product" table, which has an entity pluralized to "Products"

MyEntities db = new MyEntities();

var cheapProducts = db.Products.Where(p => p.Price > 30); // var is IEnumerable<Product>

Ответ 2

NHibernate - это путь. Для получения дополнительной информации см. http://nhforge.org и http://sf.net/projects/nhibernate.

Основное различие между Entity Framework и NHibernate заключается в том, что Entity Framework предназначен только для Microsoft SQL Server (Oracle поддерживается, но поддержка не идеальна). NHibernate поддерживает множество многих баз данных.

Ответ 3

Entity Framework является самой простой и встроенной.

Все, что вам нужно сделать, это важная модель, а затем просто обновить простые классы, которые автоматически отображаются на ваш db.

Его так же, как обновление обычных объектов, но в конце вы вызываете SaveChanges.

Ответ 4

LINQ to SQL довольно легко работать. Вы можете перетащить свои таблицы базы данных в конструктор и написать довольно простые запросы за несколько минут.

    NorthwindDataContext db = new NorthwindDataContext();

    var products = from p in db.Products
                   select p;

Что бы в основном переводилось в SELECT * FROM Products

Несколько других выборок:

    var products = from p in db.Products
                   where p.Category.Name == "Beverages"
                   select p;

    var products = from p in db.Products
                   orderby p.Name
                   select p;

Ответ 5

На мой взгляд, лучшим решением является создание промежуточного класса между db и приложением (некоторый тип уровня данных), который содержит несколько методов для управления запросами. Описание ниже базы на SQLite как аналог SQLServer (ADO-коннектор)

Упомянутый класс может с помощью singleton, и вы можете вызвать его экземпляр везде, где хотите в своем приложении - для SQLite он может выглядеть так:

private static SQLite instance;

public static SQLite getInstance()
{
   if(instance == null)
   {
    instance = new SQLite();
    thread = Thread.CurrentThread.ManagedThreadId;
   }
   return instance;
}

Вы можете получить экземпляр таким образом:

SQLite db = SQLite.getInstance();

Этот класс может содержать несколько методов манипуляции данными, например:

public SQLiteCommand prepareQuery(string sql)
{
   cmd = new SQLiteCommand(sql, conn);
   return cmd;
}

public SQLiteDataReader executeReader()
{   
    return cmd.ExecuteReader();
}

public int executeInt()
{
   object obj = cmd.ExecuteScalar();
   return (int)obj;
}

а также методы управления транзакциями и диагностики. Итак, теперь вы можете использовать этот класс в своем приложении, если у вас есть другие источники db или даже типы db, вы можете создать следующий слой данных (например, для Oracle или MSSQL, MySQL...), каждый из которых реализует один и тот же интерфейс, например:

IDataBase

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