| 2008-06-19 07:08
下载了您的代码看了一下,可能是我太笨了,基本没有看懂。
发现了一个小问题:一行注释都没有??
还有就是由于使用了很多的接口,右键—> 转到定义,就会转到接口的定义,那么在那里实现的呢?不太好找哇。
唯一能看懂一点点就是这里,大概是把 query="from Person where firstName = :firstName") 转换成了一条sql语句,交给了某个东东去执行。
据他的实现代码在哪里呢?
IEnumerable results = ctx.ExecuteQuery(typeof (T),
"SELECT * FROM " + GetTableName() + " WHERE " +
string.Format(queryString, parameters));
//
// 摘要:
// 直接对数据库执行 SQL 查询。
//
// 参数:
// elementType:
// 要返回的 System.Collections.Generic.IEnumerable<T> 的类型。使查询结果中的列与对象中的字段或属性相匹配的算法如下所示:如果字段或属性映射到特定列名称,则结果集中应包含该列名称。如果未映射字段或属性,则结果集中应包含其名称与该字段或属性相同的列。通过先查找区分大小写的匹配来执行比较。如果未找到匹配项,则会继续搜索不区分大小写的匹配项。如果同时满足下列所有条件,则该查询应当返回(除延迟加载的对象外的)对象的所有跟踪的字段和属性:T
// 是由 System.Data.Linq.DataContext 显式跟踪的实体。System.Data.Linq.DataContext.ObjectTrackingEnabled
// 为 true。实体具有主键。否则会引发异常。
//
// query:
// 要执行的 SQL 查询。
//
// parameters:
// 要传递给命令的参数数组。注意下面的行为:如果数组中的对象的数目小于命令字符串中已标识的最大数,则会引发异常。如果数组包含未在命令字符串中引用的对象,则不会引发异常。如果某参数为
// null,则该参数会转换为 DBNull.Value。
//
// 返回结果:
// 由查询返回的对象的 System.Collections.Generic.IEnumerable<T> 集合。
public IEnumerable ExecuteQuery(Type elementType, string query, params object[] parameters);