Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 自定义数据提供程序?_C#_Linq_Entity Framework_Ado.net - Fatal编程技术网

C# 自定义数据提供程序?

C# 自定义数据提供程序?,c#,linq,entity-framework,ado.net,C#,Linq,Entity Framework,Ado.net,我有一个数据库,它不提供(目前)c#客户端库,只提供二进制tcp或http rest协议 我必须编写一个可以在DB上执行各种操作的应用程序:CRUD、管理等 这些操作在sql查询中表示,对于特定于DB的操作,使用select/insert/update/delete和自定义关键字 我想知道这一结果的途径是什么。我可以从两个角度提出这个问题:一个是理想世界,一个是现实世界 如果有任何反馈,我将不胜感激!建议的方法、遇到的问题等是什么 PS:我正在考虑这些方法: 编写自定义ADO.Net提供程序(

我有一个数据库,它不提供(目前)c#客户端库,只提供二进制tcp或http rest协议

我必须编写一个可以在DB上执行各种操作的应用程序:CRUD、管理等

这些操作在sql查询中表示,对于特定于DB的操作,使用select/insert/update/delete和自定义关键字

我想知道这一结果的途径是什么。我可以从两个角度提出这个问题:一个是理想世界,一个是现实世界

如果有任何反馈,我将不胜感激!建议的方法、遇到的问题等是什么

PS:我正在考虑这些方法:

  • 编写自定义ADO.Net提供程序(IDbCommand、IDbConnection等)
  • 编写自定义linq提供程序(依赖于前者)
  • 也许写一个EF提供者

    • Linq只是一种语言集成查询。这是表示查询的语法,但在数据库查询的情况下,它只创建表达式树,必须将其转换为SQL并以某种方式执行。对于此执行,使用ADO.NET提供程序。依赖ADO.NET提供程序访问数据库的实体框架的状态相同。因此,如果您想创建一些实现,您无论如何都应该从ADO.NET provider开始。

      实际上,LINQ实现并不与任何特定的基础设施相关联——它只是一种语言构造,因此,LINQ到Amazon或LINQ到RIA都是可能的。除非你指的是LINQ到SQL,它是不同的,并且不是很可扩展的。@Marc Gravell:那么你的意思是第一点和第二点是两个独立的项目?对于自定义linq提供程序,我的意思不是编写一个linq到sql的提供程序,而是一个自定义存储库
      MyDB repo=new MyDB();回购负载((c)=>c.CompanyName==“foo corp”)或类似的东西,实际上没有显示任何LINQ;p只是一个使用表达式API的存储库实现。它不需要涉及ADO.NET等。此自定义数据提供程序的任何解决方案