Лучший способ получить доступ к базе данных SQL Server с помощью С#.Net
Я новичок в .NET и слышал о нескольких различных способах запроса данных SQL Server, таких как ADO.NET и инфраструктура сущности.
Может ли кто-нибудь дать мне несколько советов о лучшем способе поиска новых приложений?
Спасибо за любую помощь или предложения.
Ответы
Ответ 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 в приложении сосредоточено в одном месте, и для программиста это чистое удовольствие - это мое предложение.