ADO.NET Entity Framework Extensions 简单应用
一、情景
如果你的项目中有返回多结果集的存储过程。
如果你的项目要和老项目中的ADO.Net共用事务。
如果你要动态的创建数据库的表。
但是你还是希望使用Entity Framework。那么继续往下看吧。
二、ADO.NET Entity Framework Extensions(下载地址)
1、引用EFExtensions.dll文件。
2、添加 using Microsoft.Data.Extensions; 的声明。
三、EFExtensions执行T-SQL语句
1 2 3 4 5 6 7 8 9 10 11 12 | public void ExecuteSQL( string sql) { using (DBEntities db = new DBEntities()) { using (db.Connection.CreateConnectionScope()) { var cmd = db.CreateStoreCommand( "update Orders set Freight=8 where OrderID=10292" , CommandType.Text); cmd.ExecuteNonQuery(); } } } |
四、EFExtensions执行存储过程
1 2 3 4 5 6 7 8 9 10 11 12 | public DataSet ExecuteProcedure() { using (DBEntities db = new DBEntities()) { var cmd = db.CreateStoreCommand( "CustOrdersOrders" , CommandType.StoredProcedure, new SqlParameter( "CustomerID" , "ALFKI" )); SqlDataAdapter da = new SqlDataAdapter(cmd as SqlCommand); DataSet ds = new DataSet(); da.Fill(ds); return ds; } } |
五、EFExtensions执行T-SQL语句获得实体集
1 2 3 4 5 6 7 | public IEnumerable<Orders> GetSQL() { using (DBEntities db = new DBEntities()) { return db.CreateStoreCommand( "select * from Orders" , CommandType.Text).Materialize<Orders>(); } } |
六、让EF与ADO.Net共享事务
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | public void UseSameTran() { using ( var tran = new TransactionScope(TransactionScopeOption.Required)) { using (DBEntities db = new DBEntities()) { using (db.Connection.CreateConnectionScope()) { Orders order = db.Orders.FirstOrDefault(o => o.OrderID == 10291); order.Freight = 7; db.SaveChanges(); var cmd = db.CreateStoreCommand( "update Orders set Freight=8 where OrderID=10292" , CommandType.Text); cmd.ExecuteNonQuery(); tran.Complete(); } } } } |
七、查看Linq的T-SQL语句
1 2 3 4 5 6 7 8 9 | var q = from p in context.Products where p.ProductName.StartsWith( "Foo" ) select p; // before string commandText = ((ObjectQuery<Product>)q).ToTraceString(); // after string commandText = q.ToTraceString(); |
八、结束语
用EF做项目,上面这些也都是容易碰到的不太好解决的问题。Entity Framework Extensions都为我们解决了。
在下载的实例中还有一些其他的应用。后面的就靠各位去发掘了吧。
分类:
技术
标签:
Entity Framework
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库