网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

LinqDataContext有什么用

这篇文章主要介绍了Linq DataContext有什么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

成都创新互联是专业的双河网站建设公司,双河接单;提供网站设计制作、成都做网站,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行双河网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!

主键缓存

Linq to sql对查询过的对象进行缓存,之后的如果只根据主键查询一条记录的话会直接从缓存中读取。比如下面的代码:

Customer c1 = ctx.Customers.Single(customer => customer.CustomerID == "ANATR");  c1.ContactName = "zhuye";  Customer c2 = ctx.Customers.Single(customer => customer.CustomerID == "ANATR");   Response.Write(c2.ContactName);

执行后只会产生一条SQL:

  1. SELECT [t0].[CustomerID], [t0].[CompanyName], [t0].[ContactName], [t0].
    [ContactTitle], [t0].[Address], [t0].[City], [t0].[Region], [t0].
    [PostalCode], [t0].[Country], [t0].[Phone], [t0].[Fax]  

  2.  

  3. FROM [dbo].[Customers] AS [t0]  

  4.  

  5. WHERE [t0].[CustomerID] = @p0  

  6. -- @p0: Input String (Size = 5; Prec = 0; Scale = 0) [ANATR] 

由于没有提交修改,所以数据库中的记录还是没有更新。由于这个特性,我们在使用存储过程作为实体更新方法的时候就要当心了,存储过程书写错误,即使你提交了修改也很可能导致缓存中的数据和数据库中的数据不一致,引起不必要的麻烦。

Linq DataContext隔离

有的时候我们会把对象从外部传入Linq DataContext,要求它更新,由于不同的Linq DataContext是相对独立的。由于新的Linq DataContext中还没有获取实体,我们只能通过附加方式更新数据。

首先把Customer表的主键字段加上IsVersion标识:

  1. [Column(Storage="_CustomerID", DbType="NChar(5) NOT NULL", 
    CanBeNull=false, IsPrimaryKey=true, IsVersion = true)] 

运行下面的测试代码:

  1. Customer c = new Customer { CustomerID = "ALFKI", 
    ContactName = "zhuye", CompanyName = "1111" };  

  2.  

  3. ctx.Customers.Attach(c, true);  

  4. ctx.SubmitChanges(); 

会捕捉到下面的SQL语句:

  1. UPDATE [dbo].[Customers]  

  2. SET [CompanyName] = @p2, [ContactName] = @p3, [ContactTitle] = @p4, 
    [Address] = @p5, [City] = @p6, [Region] = @p7, [PostalCode] = @p8, 
    [Country] = @p9, [Phone] = @p10, [Fax] = @p11  

  3. WHERE ([CustomerID] = @p0) AND ([CustomerID] = @p1)  

  4. -- @p0: Input StringFixedLength (Size = 5; Prec = 0; Scale = 0) [ALFKI]  

  5. -- @p1: Input String (Size = 5; Prec = 0; Scale = 0) [ALFKI]  

  6. -- @p2: Input String (Size = 4; Prec = 0; Scale = 0) [1111]  

  7. -- @p3: Input String (Size = 5; Prec = 0; Scale = 0) [zhuye]  

  8. -- @p4: Input String (Size = 0; Prec = 0; Scale = 0) []  

  9. -- @p5: Input String (Size = 0; Prec = 0; Scale = 0) []  

  10. -- @p6: Input String (Size = 0; Prec = 0; Scale = 0) []  

  11. -- @p7: Input String (Size = 0; Prec = 0; Scale = 0) []  

  12. -- @p8: Input String (Size = 0; Prec = 0; Scale = 0) []  

  13. -- @p9: Input String (Size = 0; Prec = 0; Scale = 0) []  

  14. -- @p10: Input String (Size = 0; Prec = 0; Scale = 0) []  

  15. -- @p11: Input String (Size = 0; Prec = 0; Scale = 0) [] 

感谢你能够认真阅读完这篇文章,希望小编分享的“Linq DataContext有什么用”这篇文章对大家有帮助,同时也希望大家多多支持创新互联,关注创新互联行业资讯频道,更多相关知识等着你来学习!


新闻标题:LinqDataContext有什么用
URL地址:http://bjjierui.cn/article/jsopjo.html

其他资讯