C# 实体框架及;可移植类库

C# 实体框架及;可移植类库,c#,.net,wpf,entity-framework,wcf,C#,.net,Wpf,Entity Framework,Wcf,我有一个包含WPF项目和Windows Phone项目的解决方案,这两个项目都引用了包含my Models和ViewModels的PCL。我还有一个WCF项目,它允许我调用公共API。到目前为止效果还不错 现在,我想使用实体框架与SQL数据库通信,以便可以从ViewModels发出请求。我考虑将我的模型从PCL移动到WCF项目,并将它们作为实体使用。这意味着在PCL中引用我的WCF项目 就像这里指定的:,我得到以下错误: “未能添加对“System.ComponentModel.DataAnno

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

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

就像这里指定的:,我得到以下错误:

“未能添加对“System.ComponentModel.DataAnnotations”的引用。请确保它位于全局程序集缓存中。”


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


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

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

因此,我的模型不依赖于UI DLL。

以下是我的解决方案:

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


这不是最好的解决方案,但它在我等待Entity Framework 7时起作用。

我已经编辑了您的标题。请参见“”,其中一致意见为“不,它们不应该”。“实体框架不再与PCL兼容”:它从未兼容;EF依赖于ADO.NET,而ADO.NET仅在完整的.NET框架中可用。你说得对,我犯了一个错误。以前兼容但现在不再兼容的是在PCL中添加对WCF项目的引用。这个解决方案是我遇到问题时的第一个猜测。这是我尝试的,但是如果我的模型在WCF项目中,我如何从PCL中的ViewModels访问它们?如果尝试在PCL中添加对WCF项目的引用,则会出现以下错误:“无法添加对项目的引用。可移植库项目只能引用其他可移植库项目和程序集。”您可以通过添加服务引用而不是dll来对WCF应用程序进行web服务调用。这样地?因为我也不能向PCL添加服务引用。