Welcome

首页 / 软件开发 / LINQ / 走进Linq-How do I(4)拾遗补零篇第一节

走进Linq-How do I(4)拾遗补零篇第一节2010-11-25 博客园 横刀天笑最近很忙,真的很忙,所以这个系列好久没更新了,从今天起我又开始了我 的走进Linq之旅。Linq to SQL的用法基本上都说完了,还有一些细枝末节的地 方需要聊聊。

强类型DataContext

在Linq to SQL的第一篇的时候 就说道DataContext是一个入口点,我们使用Linq to SQL做的一些操作几乎都是 施加在这个类上的。在使用VS的设计器生成的代码里,我们会看到一个从 DataContext继承的局部类,大家都习惯的将这个类称之为强类型的DataContext ,她对DataContext做了进一步的封装。

今天我们先就对DataContext一 些没有介绍过的地方详细讨论一下。

首先我们先手写一个强类型的 DataContext:

强类型的DataContext
[Database (Name="CnBlogs")]
public class CnBlogsDataContext : DataContext
{
public CnBlogsDataContext(string fileOrConnectionString)
: base (fileOrConnectionString)
{ }
public CnBlogsDataContext(string fileOrConnectionString, MappingSource mapping)
: base(fileOrConnectionString, mapping)
{ }
public CnBlogsDataContext(IDbConnection conn)
: base(conn)
{ }
public CnBlogsDataContext(IDbConnection conn, MappingSource mapping)
: base(conn, mapping)
{ }
public Table<Post> Posts
{
get { return this.GetTable<Post>(); }
}
public Table<Blog> Blogs
{
get { return this.GetTable<Blog>(); }
}
public Table<User> Users
{
get { return this.GetTable<User>(); }
}
[Function(Name = "dbo.GetPostsByBlogId")]
public ISingleResult<Post> GetPostsByBlogId(
[Parameter(Name="blogid",DbType="int")]
int blogid)
{
IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo) (MethodInfo.GetCurrentMethod())), blogid);
return (ISingleResult<Post>)result.ReturnValue;
}
[Function(Name = "dbo.GetBblogsOrPosts")]
[ResultType(typeof(Blog))]
[ResultType(typeof(Post))]
public IMultipleResults GetBlogsOrPosts(
[Parameter(Name = "kind", DbType = "int")]
int kind)
{
IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo) MethodInfo.GetCurrentMethod()), kind);
return (IMultipleResults)result.ReturnValue;
}
[Function(Name = "dbo.GetBblogsAndPosts")]
[ResultType(typeof(Blog))]
[ResultType(typeof(Post))]
public IMultipleResults GetBlogsOrPosts()
{
IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)MethodInfo.GetCurrentMethod()));
return (IMultipleResults)result.ReturnValue;
}
}