我是.NET新手,聽說過查詢SQL Server數據庫的幾種不同方法,如ADO.NET和實體框架。使用C#.Net訪問SQL Server數據庫的最佳方法
任何人都可以給我一些關於去新應用程序的最佳方式的建議嗎?
感謝您的任何幫助或建議。
我是.NET新手,聽說過查詢SQL Server數據庫的幾種不同方法,如ADO.NET和實體框架。使用C#.Net訪問SQL Server數據庫的最佳方法
任何人都可以給我一些關於去新應用程序的最佳方式的建議嗎?
感謝您的任何幫助或建議。
下面是使用EF代碼生成從數據庫(一個例子一個真正的應用程序你可能想從代碼中生成你的數據庫):
您將看到一個文件MyEntities.edmx添加到您的項目。您可以在設計視圖中打開它以查看您的實體和關係圖。請注意,每個實體都應該有一個主鍵 - 最簡單的方法是爲每個表或GUID列添加一個ID - 自動增量字段。反正現在你可以查詢你的數據庫是這樣的:
// 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>
NHibernate是要走的路。有關更多信息,請參閱http://nhforge.org和http://sf.net/projects/nhibernate。
實體框架和NHibernate的主要區別在於實體框架僅適用於Microsoft SQL Server(Oracle是支持的,但支持並不理想)。 NHibernate支持many many many數據庫。
如果你選擇了這個選項,也可以考慮獲得流利的NHibernate。 – 2010-10-21 17:30:03
如果您正在啓動持續數年的項目,請勿使用EF。它會用狀態信息污染你的域對象。將迫使您使用特定的編碼風格...用於EF的VisualStudio工具只支持一半。對於長項目,我會推薦使用NHibernate。 – 2010-10-21 16:45:01
這樣的BS,開箱即可獲得具有狀態的實體。但還有其他非常簡單的選擇。你最近還看過EF嗎?讓我幫你..(http://channel9.msdn.com/Blogs/wriju/POCO-Template-in-ADONET-Entity-Framework) – Nix 2010-10-21 16:57:25
LINQ to SQL很容易處理。您可以將數據庫表拖放到設計器中,並在幾分鐘內編寫非常簡單的查詢。
NorthwindDataContext db = new NorthwindDataContext();
var products = from p in db.Products
select p;
這將基本上轉化爲SELECT * FROM產品
其他一些選擇的樣本:
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 2010-10-21 16:26:05
試圖展示LINQ語法...這有點類似於SQL – Dismissile 2010-10-21 16:29:10
對於一個新項目的通用ORM解決方案,我會用NHibernate通過Linq-to-sql,但這可能會更容易與開箱即用。 – flatline 2010-10-21 16:54:40
在我看來,最好的解決辦法是創建數據庫和應用程序(某些類型的數據層)之間的中間類的一些用於管理查詢方法。 描述下在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
現在,你有某種形式的立面,你可以根據需要動態替換。 從這個時候開始,在應用程序中使用db集中在一個地方,程序員使用它非常高興 - 這是我的建議。
你有多少編程經驗?以前使用過數據庫嗎? – Onkelborg 2010-10-21 16:22:44
我有一些基本的C#知識,並且知道SQL,我只是沒有必須在C#程序之前訪問數據庫。 – user483267 2010-10-21 16:23:45
這是一個懸而未決的問題。任何好的答案將取決於你想要做什麼,你必須使用的時間框架,以及你已經熟悉/熟悉的內容。 – jac 2010-10-21 16:24:01