zoukankan      html  css  js  c++  java
  • LINQ与HQL (二)

       C# 3.0提供System.Data.Linq.DataContext这么一个非常重要的类型,对LINQ来说;DataContext提供了实体对象与数据对象之间的访问通道;
       public class CustomersCtx : DataContext
       {
           public Table<Customer>  Customers;
           public CustomersCtx(string connString) : base(connString) {.....}
        }
      下面我们看看DataContext和LINQ结合后的强大功能;
       CustomersCtx ctx = new CustomersCtx("数据连接串");
       var  list = from c in ctx.Customers select c;
       var list1 = from c in ctx.Customers where c.ContactorName == '43434'
                        select new {id = c.ID,name = c.ContactorName};

       感觉是不是很简洁,其实现在ASP.NET ENTITY也提供类似的访问方式;
       另外DataContext还提供很多功能,比如日志功能,通过日志我们可以看到LINQ是如何转化为标准SQL的;例如:ctx.log = new StreamWriter("日志文件"):
       在补充一个功能,肯能对写单元测试有用,,就是DataContext提供了Create table 和Delete Table 的能力,所以在单元测试的TestBase里能很有用,(以前用castle 的时候,也是利用castLe类似的功能来初始化数据库)

       除此以外DataContext还提供了与ADO.NET的接口,可以方便使用传统ado.net的数据访问方式访问关系数据库;(类似的做法castle ,nhernate 也有)这两种ORM工具还支持HQL和SQL的访问方式;


        
      
  • 相关阅读:
    jQuery中jsonp的跨域处理,no access-control-allow-origin,unexpected token
    doT中嵌套for循环的使用
    c++ new带括号和不带括号
    python装饰器之使用情景分析
    Python中classmethod与staticmethod区别
    python作用域 scope
    duck type鸭子类型
    EAFP和LBYL 两种防御性编程风格
    c++重载、覆盖和隐藏
    c++ 名字粉碎(name mangling)
  • 原文地址:https://www.cnblogs.com/pojia/p/1102582.html
Copyright © 2011-2022 走看看