【问题标题】:.NET Entity Framework - will it support cross platform clients?.NET Entity Framework - 是否支持跨平台客户端?
【发布时间】:2023-08-30 02:22:01
【问题描述】:

我 [终于] 开始将 Microsoft .NET Entity Framework 视为我产品的数据库层。理想情况下,我将使用它来放置在数据库和 WCF 之上,并供网站、富客户端和移动设备使用。

当前版本的 EF 是否支持跨平台客户端?如果我构建 Mac 应用、Linux 应用、iPad 应用、Android 应用等,它会工作吗?

它是开箱即用的,还是需要额外的编码来支持跨平台?如果支持,是否需要为其他客户端安装额外的封装?

【问题讨论】:

  • “坐在数据库和 WCF 之上” - 你的意思是坐在数据库和 WCF 之间?

标签: .net entity-framework entity-framework-4 cross-platform


【解决方案1】:

对于我公司的一个项目,我们在顶部使用 MSSQL 数据库、EF 模型层和 WCF 层来服务于经典 ASP 网站(ewwww ;(、MVC2 网站和 iPhone/iPad 应用程序。简单的答案是 EF 将编译为 .NET 程序集并且需要跨平台的帮助。如果您通过标准(一组)协议(如 WCF)公开它,您可以轻松使用它。否则您将需要包装.NET 程序集,基于每个平台,以某种形式的互操作性代码。

【讨论】:

    【解决方案2】:

    不要在 WCF 服务之外公开任何特定于 EF 的实现,它会在非 Windows 客户端上正常工作。

    对这些服务的接口使用普通旧 CLR 对象 (POCO)(如果您愿意,可以使用 EF POCO 生成器创建),而不是 EF 的默认基于 EntityObject 的域模型,以确保客户端不依赖 EF。

    【讨论】:

      【解决方案3】:

      它适用于您可以在 Windows 和使用 Mono 的 Linux 上运行 .net 框架的地方。

      对于 iPod、Andriod 和其他移动设备,如果您使用 WCF/REST 与服务器通信,则无需在移动设备上运行数据库层。

      【讨论】:

        【解决方案4】:

        您只需要支持 EF 的服务器部分,它可能需要 .Net 运行时支持。然后,您将通过像 OData 这样的标准协议公开您的数据。对于您的客户,您将使用协议进行通信。

        【讨论】: