Linq中怎么调用SubmitChanges方法
本篇文章给大家分享的是有关Linq中怎么调用SubmitChanges方法,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
当Linq SubmitChanges方法时,LINQ to SQL会检查已知对象的集合以确定新实例是否已附加到它们。如果已附加,这些新实例将添加到被跟踪对象的集合。
2. 所有具有挂起更改的对象将按照它们之间的依赖关系排序成一个对象序列。如果一个对象的更改依赖于其他对象,则这个对象将排在其依赖项之后。
3. 在即将传输任何实际更改时,LINQ to SQL会启动一个事务来封装由各条命令组成的系列。
4. 对对象的更改会逐个转换为SQL命令,然后发送到服务器。
如果数据库检测到任何错误,都会造成提交进程停止并引发异常。将回滚对数据库的所有更改,就像未进行过提交一样。DataContext 仍具有所有更改的完整记录。
下面代码说明的是在数据库中查询CustomerID为ALFKI的顾客,然后修改其公司名称,***次更新并Linq SubmitChanges方法,第二次更新了数据但并未Linq调用SubmitChanges方法。
//查询 Customer cust = db.Customers.First(c => c.CustomerID == "ALFKI"); //更新数据并调用SubmitChanges()方法 cust.CompanyName = "YJingLee's Blog"; db.SubmitChanges(); //更新数据没有调用SubmitChanges()方法 cust.CompanyName = "http://lyj.cnblogs.com";
动态查询
使用动态查询,这个例子用CreateQuery()方法创建一个IQueryable
var c1 = Expression.Parameter(typeof(Customer), "c"); PropertyInfo City = typeof(Customer).GetProperty("City"); var pred = Expression.Lambda<Func<Customer, bool>>( Expression.Equal( Expression.Property(c1, City), Expression.Constant("Seattle") } }; IQueryable custs = db.Customers; Expression expr = Expression.Call(typeof(Queryable), "Where", new Type[] { custs.ElementType }, custs.Expression, pred); IQueryable<Customer> q = db.Customers.AsQueryable(). Provider.CreateQuery<Customer>(expr);
Log属性用于将SQL查询或命令打印到TextReader。此方法对了解 LINQ to SQL 功能和调试特定的问题可能很有用。
下面的示例使用Log属性在SQL代码执行前在控制台窗口中显示此代码。我们可以将此属性与查询、插入、更新和删除命令一起使用。
//关闭日志功能 //db.Log = null; //使用日志功能:日志输出到控制台窗口 db.Log = Console.Out; var q = from c in db.Customers where c.City == "London" select c; //日志输出到文件 StreamWriter sw = new StreamWriter(Server.MapPath("log.txt"), true); db.Log = sw; var q = from c in db.Customers where c.City == "London" select c; sw.Close();
以上就是Linq中怎么调用SubmitChanges方法,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注编程网行业资讯频道。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341