我有一个包含 WPF 项目和 Windows Phone 项目的解决方案,它们都引用了我的 PCL,其中包含我的模型和 ViewModel。我还有一个 WCF 项目,允许我调用通用 API。到目前为止它工作得很好。
现在我想使用 Entity Framework 与 SQL 数据库通信,这样我就可以从我的 ViewModels 发出请求。我考虑过将我的模型从 PCL 移动到 WCF 项目,并将它们用作实体。这意味着在 PCL 中引用我的 WCF 项目。
就像这里指定的一样:Entity Framework for Portable Class Library ,我收到以下错误:
“无法添加对‘System.ComponentModel.DataAnnotations’的引用。请确保它在全局程序集缓存中。”
这实际上是一个 Nuget 问题。 (http://nuget.codeplex.com/workitem/2978)。真正的原因是 Entity Framework 不再与 PCL 兼容。据我了解,Entity Framework 7 允许我这样做,但目前还不可能。
有人知道用这种配置与我的数据库通信的好方法吗?
最佳答案
这是我的解决方案:
我的模型和 View 模型仍然在我的 PCL 中定义。实体在 WCF 中定义。我在我的 WCF 中添加了一个将实体转换为模型的类。在 PCL 中定义对 API 的每个可用请求的接口(interface),我正在每个平台中实现此接口(interface)。每个平台实现仅调用 WCF 中定义的方法(这意味着我必须在每个平台中以相同的方式实现每个请求)。我在 WCF 中使用我的转换类来返回模型而不是实体。
这不是最好的解决方案,但在我等待 Entity Framework 7 时它是有效的。
关于c# - Entity Framework 和可移植类库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26876174/