易截截图软件、单文件、免安装、纯绿色、仅160KB

走进Linq Linq to SQL源代码赏析

在DataContext中我们打交道最多的也许就是GetTable<TEntity>()方法了,这个方法会获取一个Table<TEntity>对象,今天我们就来看看这个对象是如何获取的。
  对于获取Table<TEntity>对象我们还要看看这个DataContext是不是强类型的,关于强类型的DataContext可以看我前面一篇文章,强类型的DataContext里包含有几个Table<TEntity>类型的属性,比如我们的库中有blogs、posts等数据
库表,那么你可能就会建立Table<Blog>和Table<Post>类型的属性(参见前面一篇文章)。在上一章DataContext的初始化里讲到Init方法的最后一行是InitTables方法的调用。我们首先来看看InitTables方法的代码:
///<summary>
///初始化数据库中有几个表
///从方法实现中意图来看,这个方法主要在定义了强类型的DataContext才有意义
///在强类型的DataContext里一般定义了Table<Post>之类的字段来表示数据库中有几个
///表,该方法调用DataContext的GetTable方法设置这些字段的值
///</summary>
///<paramname="schema"></param>
private void InitTables(objectschema)
{
  //用反射遍历DataContext类(可能是它的子类)里所有的公有实例字段
   foreach(FieldInfo info in schema.GetType().GetFields(BindingFlags.Public|BindingFlags.Instance))
  {
    //字段类型
    Type fieldType=info.FieldType;
    //该字段是否是泛型的,并且是Table<>类型的,而且该字段的值为null
    if((fieldType.IsGenericType&&(fieldType.GetGenericTypeDefinition()==
      typeof(Table<>)))&&(((ITable)info.GetValue(schema))==null))
    {
       //获取Table<TEntity>中TEntity的具体类型
        Typetype=fieldType.GetGenericArguments()[0];
       //调用DataContext的GetTable方法得到一个ITable对象
        ITable table=this.GetTable(type);
       //设置值
        info.SetValue(schema,table);
     }
    }
}
代码中的注释说的很详细了,先看看DataContext类里是否有Table<TEntity>的属性,而只有在强类型的DataContext情况下才会有的。所以只有在强类型的情况下才会在初始化DataContext的时候设置这些Table<


相关文档:

SQL Server视图使用

视图可以被看成是虚拟表或存储查询。可通过视图访问的数据不作为独特的对象存储在数据库内。数据库内存储的是 SELECT 语句。SELECT 语句的结果集构成视图所返回的虚拟表。用户可以用引用表时所使用的方法,在 Transact-SQL 语句中通过引用视图名称来使用虚拟表。使用视图可以实现下列任一或所有功能:
  将用户限定在表 ......

SQL Having子句

SELECT
count
(
userName
)

from
`userInfo`

GROUP
BY
userName
HAVING
count
(
userName
)
>
1。
这个Having一定要放在GROUP BY的后面。
而且很特殊的情况是在有group by的时候,是不能用到where子句的。而且Having子句一般是放在其他子句的后面的。
当我们选不只一个栏位,且其 ......

SQL删除重复数据

一、具有主键的情况
I.具有唯一性的字段id(为唯一主键)
delete 用户表   
where id not in   
(
select max(id) from 用户表 group by col1,col2,col3...
)
group by 子句后跟的字段就是你用来判断重复的条件,如只有col1,
那么只要col1字段内容相同即表示记录相同。
II. ......

深入浅出oracle锁 原理篇 & 停止无反应的sql会话

在现代的多用户多任务系统中,必然会出现多个用户同时访问共享的某个对象,这个对象可能是表,行,或者内存结构,为了解决多个用户并发性访问带来的数据的安全性,完整性及一致性问题,必须要有一种机制,来使对这些共享资源的并发性访问串行化,oracle中的锁就可以提供这样的功能,当事务在对某个对象进行操作前,先向系统 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号