实体框架&;可移植类库

本文关键字:可移植 类库 amp 框架 实体 | 更新日期: 2023-09-27 18:30:01

我有一个包含WPF项目和Windows Phone项目的解决方案,这两个项目都引用了我的PCL,其中包含我的Models和ViewModels。我还有一个WCF项目,它允许我调用一个通用的API。到目前为止效果还不错。

现在我想使用实体框架与SQL数据库通信,这样我就可以从ViewModels中发出请求。我考虑过将我的模型从PCL转移到WCF项目,并将它们用作实体。这意味着要在PCL中引用我的WCF项目。

就像这里指定的:可移植类库的实体框架,我得到了以下错误:

"无法添加对"System.ComponentModel.DataAnnotations"的引用。请确保它在全局程序集缓存中。"

这实际上是一个Nuget问题。(http://nuget.codeplex.com/workitem/2978)。真正的原因是实体框架不再与PCL兼容。据我所知,实体框架7将允许我这样做,但目前还不可能。

有人知道用这种配置与我的数据库通信的好方法吗?

实体框架&;可移植类库

这是我的解决方案:

我的模型和视图模型仍然在我的PCL中定义。实体在WCF中定义。我在WCF中添加了一个将实体转换为模型的类。一个接口,它定义了对PCL中API的每个可用请求,我正在每个平台中实现这个接口。每个平台实现只调用WCF中定义的方法(这意味着我必须在每个平台中以相同的方式实现每个请求)。我在WCF中使用转换类来返回模型而不是实体。

这不是最好的解决方案,但在我等待EntityFramework7时它是有效的。

我通常将模型存储在服务层后面的wcf应用程序中。

因此,我的模型对UI dll没有依赖关系。