一、情景
如果你的項目中有返回多結果集的存儲過程。
如果你的項目要和老項目中的ADO.Net共用事務。
如果你要動態的創建數據庫的表。
但是你還是希望使用Entity Framework。那么繼續往下看吧。
二、ADO.NET Entity Framework Extensions(下載地址)
1、引用EFExtensions.dll文件。
2、添加 using Microsoft.Data.Extensions; 的聲明。
三、EFExtensions執行T-SQL語句
view sourceprint?
| 01 | public void ExecuteSQL(string sql) |
| 03 | ??? using (DBEntities db = new DBEntities()) |
| 05 | ??????? using (db.Connection.CreateConnectionScope()) |
| 07 | ??????????? var cmd = db.CreateStoreCommand("update Orders set Freight=8 where OrderID=10292", CommandType.Text); |
| 09 | ??????????? cmd.ExecuteNonQuery(); |
四、EFExtensions執行存儲過程
?
view sourceprint?
| 01 | public DataSet ExecuteProcedure() |
| 03 | ??? using (DBEntities db = new DBEntities()) |
| 05 | ??????? var cmd = db.CreateStoreCommand("CustOrdersOrders", CommandType.StoredProcedure, new SqlParameter("CustomerID", "ALFKI")); |
| 07 | ??????? SqlDataAdapter da = new SqlDataAdapter(cmd as SqlCommand); |
| 08 | ??????? DataSet ds = new DataSet(); |
五、EFExtensions執行T-SQL語句獲得實體集
view sourceprint?
| 1 | public IEnumerable<Orders> GetSQL() |
| 3 | ??? using (DBEntities db = new DBEntities()) |
| 5 | ??????? return db.CreateStoreCommand("select * from Orders", CommandType.Text).Materialize<Orders>(); |
六、讓EF與ADO.Net共享事務
view sourceprint?
| 01 | public void UseSameTran() |
| 03 | ??? using (var tran = new TransactionScope(TransactionScopeOption.Required)) |
| 05 | ??????? using (DBEntities db = new DBEntities()) |
| 07 | ??????????? using (db.Connection.CreateConnectionScope()) |
| 09 | ??????????????? Orders order = db.Orders.FirstOrDefault(o => o.OrderID == 10291); |
| 10 | ??????????????? order.Freight = 7; |
| 11 | ??????????????? db.SaveChanges(); |
| 13 | ??????????????? var cmd = db.CreateStoreCommand("update Orders set Freight=8 where OrderID=10292", CommandType.Text); |
| 15 | ??????????????? cmd.ExecuteNonQuery(); |
| 16 | ??????????????? tran.Complete(); |
七、查看Linq的T-SQL語句
view sourceprint?
| 1 | var q = from p in context.Products |
| 2 | ??????? where p.ProductName.StartsWith("Foo") |
| 6 | string commandText = ((ObjectQuery<Product>)q).ToTraceString(); |
| 9 | string commandText = q.ToTraceString(); |
八、結束語
?????? 用EF做項目,上面這些也都是容易碰到的不太好解決的問題。Entity Framework Extensions都為我們解決了。
在下載的實例中還有一些其他的應用。后面的就靠各位去發掘了吧。
轉載于:https://www.cnblogs.com/xtsjh/archive/2011/11/03/2234229.html
總結
以上是生活随笔為你收集整理的ADO.NET Entity Framework Extensions 简单应用的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。