使用Entity Framework访问Web服务中的数据?

3
所以我使用Entity Framework作为SQL数据库的数据抽象层,避免了编写SQL查询的需要,而是使用类似于LINQ的东西。然后EF将所有内容翻译成SQL并自动连接到数据库。考虑到模型,这是管理数据的一种非常简单的方法。
现在我正在制作一个REST客户端,并考虑在其中使用EF进行访问。
那么如何使这个东西连接到REST API,而不是SQL数据库?在Google中搜索Entity Framework和REST只告诉我如何使REST服务器使用EF来访问数据库。我想在客户端上使用EF来访问Web服务器,而Web服务器再去访问数据。
所以我期望像写model.Users.Where(...)这样的东西,它被翻译为GET /api/users?filter... HTTP请求(而不是经典的SELECT * FROM Users WHERE... SQL查询)。
我尝试创建一个“ADO.NET实体数据模型”,就像我通常做的那样,但它提供的所有选项都要求我指定连接字符串 - 这仅适用于数据库。我想要一个API端点,而不是SQL连接字符串。
据我所知,EF连接到一个“DataSet”对象(自动创建并连接到数据库),但是我不知道如何让它们使用REST API。我需要编写自己的实现DataSet的类,并以某种方式使EF使用它吗?我看到的关于DataSets的所有内容似乎都是针对SQL数据库的。真是气人。
很抱歉发了这么长的帖子,只是问一个简单的问题。那么有人知道如何使Entity Framework使用REST服务而不是数据库吗?这应该很简单。毕竟,微软称其为数据访问抽象层。不是数据库访问。

使用正确的工具来完成正确的目的。就像@IlyaKorover所说:EF是一个ORM框架。如果你想要实现类似的功能,那么你就需要编写自己的包装器。 - user4864425
你是否曾经尝试使用Entity Framework实现这个功能?我认为这将是一个有趣的解决方案,当你想要直接连接到基于SQL的服务器,同时又想在本地网络中使用(代理)Web API(例如,当尝试直接连接到SQL服务器时避免防火墙问题)。在这两种情况下,你都希望使用相同的ORM。因此,我很好奇你是否已经实现了这个功能! :-) - ab-tools
1个回答

2

你提供的OData协议与EntityFramework没有任何关系,对吗?那么,Entiry Framework只支持数据库吗?因为Microsoft并没有这么说。他们说它是一个通用的数据访问抽象层。数据库并不是通用情况,而是特例。 - Dexter
哦,你给了我错误的信息。OData似乎是用于制作ASP.NET Web应用程序 - 也就是说,它在服务器端使用。在我的情况下,Web服务器/REST API甚至可能不是用.NET编写的。我需要在客户端(PC上的WPF应用程序)上使用EF来访问Web服务(连接到所述的Web服务器),而Web服务器是唯一连接到数据库的服务器。 - Dexter
实际上,EF是一个ORM框架。微软在EntityFramework的描述中从未这样说过。相反,根据他们所说,人们会得出结论它不是ORM,并且不仅仅与关系数据一起工作。但是经过尝试,似乎确实如此...微软又在撒谎了。-_- - Dexter
你知道吗,我仍然对 EF 抽象 Web 调用的可能性感到好奇。从理论上讲,这应该是可能的;为 EF 创建一个数据提供程序/驱动程序,使其建立 Web 连接并传递查询/命令。_复杂的_是实现。这个驱动程序必须将 LINQ 语句转换为 HTTP 请求(HQL,它存在!)。但是,世界上的开发人员是否会同意遵守这些规则来创建他们的 Web API?那么关于复杂的 OR 和 JOIN 查询呢?这个驱动程序能够普及到足够广泛的程度吗? :) - Krishnan
发现了另一个与之前相同答案的Stack Overflow问题,所以在这里标记一下。https://stackoverflow.com/questions/49318361 - Krishnan
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接