EntityFramework可用于Windows 8商店应用程序吗?

13

EntityFramework是否适用于Windows 8商店应用程序?

我正在使用Visual Studio 2012 Express for Windows 8。但我开始怀疑它是否可行。

我从NuGet安装了Entity Framework包,将System.Data.Entity和System.Data.Design添加到了项目中。

但无论我做什么,DbContext都没有被识别......

有任何想法吗?

编辑:

EntityFramework不适用于Windows Store应用程序。我不理解微软对此的立场,他们很差劲。

另一个解决方案是使用SQLite,但它不是ORM。那还有什么意义呢?


EntityFramework 不支持 Windows 8 应用商店应用。您可以使用 SQLite:http://timheuer.com/blog/archive/2012/08/07/updated-how-to-using-sqlite-from-windows-store-apps.aspx - Joffrey Kern
SQLite不是ORM,对吗? - Antoine Gamond
@JordyvanEijk 什么操作系统项目?:) 顺便感谢您的快速回复 - Antoine Gamond
@HenkHolterman,您所说的客户端是指什么?我猜您并不是在引用像Silverlight这样的客户端应用程序,而是指ASP.NET等。但问题在于,为了使用ORM工具,最终需要一个数据库。W8采用Web服务等方式接收数据,就像Silverlight一样,没有直接访问数据库的方法。 - daryal
您可以使用实体框架创建 WCF SOAP/RESTful 服务,并在 Windows Store 应用程序中使用它。我已经在我的应用程序中使用过了。 - Farhan Ghumra
显示剩余2条评论
4个回答

8
据我所知,Windows 8 应用商店的应用是针对 WinRT(Windows Runtime)开发的。
因此,由于可以使用 C# 来针对 WinRT 进行开发,并且 .NET Framework 中有很多类与 WinRT 相匹配,大多数不使用非常特定库的可用代码库也可以在 Windows 8 应用商店上工作。
WinRT 中有很多不可用的功能。例如,Entity Framework 是构建在 ADO.NET 之上的,而这在 WinRT 上不可用。
Visual Studio 足够聪明,可以隐藏在 WinRT 上不可用的类和组件,这就是为什么与 Entity Framework 相关的类不能在您的 Windows 8 应用商店项目中使用的原因。
如果要使用 Entity Framework,则需要创建一个 RESTful Web API(例如使用 ASP.NET Web API),并通过网络异步访问数据层。
否则,您需要使用本地数据库存储,如 SQLite 或 XML。

2
换句话说,微软糟透了。该应用程序需要在离线模式下运行。我认为这对大多数应用程序都是如此。而SQLite不是ORM... - Antoine Gamond
1
在我谦逊的观点中,微软将Windows 8应用开发降级成了移动开发。我的意思是,平板电脑、笔记本电脑甚至是台式电脑并没有移动开发的限制。或者你可以说微软希望每个设备都连接到互联网,并迫使每个人使用云(即Azure)。这是一个很好的理由,不是吗?;) - Matías Fidemraizer
@AntoineGamond 我不确定,但你可以尝试一下Dapper,这是StackExchange背后的迷你ORM。也许它适合你的需求(或者谁知道呢)。 - Matías Fidemraizer
以一种简单的方式持久化数据只是基本的事情,每个人都需要它。不这样做就很糟糕,无论是移动开发还是其他领域。 - Antoine Gamond
@AntoineGamond 注意,我的想法充满了讽刺意味。我会投票支持“将所有人移至云端”的理由。微软、谷歌和任何软件巨头都希望在网络上进行更多的异步工作,并在设备上做更少的工作。也许是因为这些设备可以脱机工作并使用电池,而卸载它们可以延长电池寿命,但还有其他一些情况可能涉及到任何开发环境,甚至是Windows 8商店应用程序! - Matías Fidemraizer
显示剩余2条评论

2

Entity Framework在Windows 8商店应用程序中不可用。这是因为Windows商店应用程序在沙箱中运行,无法使用普通数据库。您可以使用SQLite,或者将XML / JSon作为源,您可以在应用程序第一次启动时将其部署到应用程序的IsolatedStorage中。


1
“在沙盒中运行”似乎不是一个完整的解释...EF 的哪个部分会不安全? - H H
1
在iOS上,应用程序也被沙箱限制,但这并不意味着我们不能在沙箱中拥有数据库。我不明白微软官方对此的方法是什么?他们构建了一个很棒的框架,但它不兼容Windows 8应用程序? - Antoine Gamond
1
也许一个很好的论点是,Windows商店应用程序的大部分工作都是基于Windows RT而不是常规的Win32/.NET,这意味着很多代码库在Windows 8现代UI应用程序上无法工作。 - Matías Fidemraizer

2

不,它不可用。你可以使用SQLite,这个HowTo对我很有帮助。非常好用!


1
SQLite不是ORM。我们已经到2013年了...你知道LinqConnect吗?http://www.devart.com/linqconnect/ - Antoine Gamond

1
记录一下: 答案并不是创建一个Web服务或使用云服务。SqlLite适用于存储本地(单用户)信息,但仅此而已。
关于这个问题,虽然不是全部,但大多数与数据库的连接都是通过套接字连接完成的。因此,可以连接到某些数据库并仍将应用程序保持在沙盒中。 然而,微软的意图很明显:云或失败。所以微软表示最好连接到一个Web服务(另一个套接字连接),而不是使用直接连接,因为这样效率低下(且有风险)。
Windows Store应用程序简直是劣质的。
更令人伤心的是,微软想从我们的软件中削减一些收入。
我真的尝试过喜欢WinRT(现在是UWP),但这是不可能的。在这3年里,事情没有改变。

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