这里介绍Linq to SQL不仅仅能做字段与属性之间的映射,还可以将存储过程或用户自定义方法与.net里的方法之间做映射,功能是不是很强大?以及介绍强类型DataContext。

Linq有许多值得学习的当地,这儿咱们首要介绍强类型DataContext,包含介绍Linq to SQL等方面。

Linq to SQL强类型DataContext(linq sql可以处理任何类型的数据)  强类型DataContext SQL 第1张

最近很忙,真的很忙,所以这个系列好久没更新了,从今日起我又开端了我的走进Linq之旅。Linq to SQL的用法基本上都说完了,还有一些细枝末节的当地需求聊聊。

强类型DataContext

在Linq to SQL的***篇的时分就说道DataContext是一个进口点,咱们运用Linq to SQL做的一些操作简直都是施加在这个类上的。在运用VS的规划器生成的代码里,咱们会看到一个从DataContext承继的局部类,咱们都习气的将这个类称之为强类型的DataContext,她对DataContext做了进一步的封装。

今日咱们先就对DataContext一些没有介绍过的当地具体讨论一下。

首要咱们先手写一个强类型DataContext:

  1. [Database(Name="CnBlogs")]
  2. publicclassCnBlogsDataContext:DataContext
  3. {
  4. publicCnBlogsDataContext(stringfileOrConnectionString)
  5. :base(fileOrConnectionString)
  6. {}
  7. publicCnBlogsDataContext(stringfileOrConnectionString,
    MappingSourcemapping)
  8. :base(fileOrConnectionString,mapping)
  9. {}
  10. publicCnBlogsDataContext(IDbConnectionconn)
  11. :base(conn)
  12. {}
  13. publicCnBlogsDataContext(IDbConnectionconn,MappingSourcemapping)
  14. :base(conn,mapping)
  15. {}
  16. publicTable<Post>Posts
  17. {
  18. get{returnthis.GetTable<Post>();}
  19. }
  20. publicTable<Blog>Blogs
  21. {
  22. get{returnthis.GetTable<Blog>();}
  23. }
  24. publicTable<User>Users
  25. {
  26. get{returnthis.GetTable<User>();}
  27. }
  28. [Function(Name="dbo.GetPostsByBlogId")]
  29. publicISingleResult<Post>GetPostsByBlogId(
  30. [Parameter(Name="blogid",DbType="int")]
  31. intblogid)
  32. {
  33. IExecuteResultresult=this.ExecuteMethodCall(this,
    ((MethodInfo)(MethodInfo.GetCurrentMethod())),blogid);
  34. return(ISingleResult<Post>)result.ReturnValue;
  35. }
  36. [Function(Name="dbo.GetBblogsOrPosts")]
  37. [ResultType(typeof(Blog))]
  38. [ResultType(typeof(Post))]
  39. publicIMultipleResultsGetBlogsOrPosts(
  40. [Parameter(Name="kind",DbType="int")]
  41. intkind)
  42. {
  43. IExecuteResultresult=this.ExecuteMethodCall(this,
    ((MethodInfo)MethodInfo.GetCurrentMethod()),kind);
  44. return(IMultipleResults)result.ReturnValue;
  45. }
  46. [Function(Name="dbo.GetBblogsAndPosts")]
  47. [ResultType(typeof(Blog))]
  48. [ResultType(typeof(Post))]
  49. publicIMultipleResultsGetBlogsOrPosts()
  50. {
  51. IExecuteResultresult=this.ExecuteMethodCall(this,
    ((MethodInfo)MethodInfo.GetCurrentMethod()));
  52. return(IMultipleResults)result.ReturnValue;
  53. }
  54. }

在这个类里呈现了四个前面没有看到的特性:Database,Function,Parameter,ResultType至于Database就不用说了,便是做数据库映射的。

Linq to SQL不仅仅能做字段与特点之间的映射,还能够将存储进程或用户自定义办法与.net里的办法之间做映射,功用是不是很强壮?这个映射便是经过Function和Parameter共同完成的。

Function有两个特点IsComposable和Name,Name便是用来指定数据库中存储进程或许用户自定义办法的姓名,当IsComposable为true的时分,则标明该办法对应着一个用户自定义办法,不然对应一个存储进程,默许是false。Function特性只能放在办法上面。

Parameter便是用来映射存储进程或办法承受的参数。

【修改引荐】

  1. LINQ查询操作经验总结
  2. LINQ遍历多个数组深化分析
  3. Linq查询Access数据文件浅谈
  4. LINQ构建结构规划学习笔记
  5. LINQ重要组成部分简介
转载请说明出处
知优网 » Linq to SQL强类型DataContext(linq to sql可以处理任何类型的数据)

发表评论

您需要后才能发表评论