我是.NET的新手,听说有几种不同的查询SQL Server数据库的方法,如ADO.NET和实体框架。
有人能给我一些关于新应用程序最佳选择的建议吗?
感谢任何帮助或建议。
我是.NET的新手,听说有几种不同的查询SQL Server数据库的方法,如ADO.NET和实体框架。
有人能给我一些关于新应用程序最佳选择的建议吗?
感谢任何帮助或建议。
以下是使用EF与从数据库生成的代码示例(对于真正的应用程序,您可能希望从代码生成您的DB):
您将看到一个名为MyEntities.edmx的文件添加到您的项目中。您可以以设计视图打开它,以查看实体和关系的图表。请注意,每个实体都应该有一个主键 - 最简单的方法是在每个表中添加一个ID自动递增字段或GUID列。现在,您可以像这样查询您的数据库:
// 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>
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;
var products = db.Products;
- SLaks在我看来,最好的解决方案是在数据库和应用程序之间创建一个中间类(一种数据层),其中包含许多管理查询的方法。以下描述基于SQLite作为SQLServer(ADO连接器)的类比。
所提到的类可以是单例的,并且您可以在应用程序中任何地方调用它的实例 - 对于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;
}
它不仅可以管理事务和诊断方法。现在,如果您有其他数据库来源甚至是不同类型的数据库,您可以在应用程序中使用此类似的类,您可以创建下一个数据层(例如用于Oracle或MSSQL、MySQL等),每个数据层都实现了相同的接口:
IDataBase
现在,您拥有了某种外观,可以根据需要动态替换。
从此时开始,在应用程序中使用数据库集中在一个地方,对程序员来说是纯粹的乐趣 - 这是我的建议。
Entity Framework 是最简单的,而且它是内置的。
你只需要导入你的模型,然后更新简单的类,这些类会自动映射到你的数据库。
这就像更新普通的对象一样,但在最后你需要调用SaveChanges来保存更改。