跨项目共享实体框架对象?

时间:2010-09-10 04:26:38

标签: wcf entity-framework-4

我有一些重构麻烦,也许有人知道为什么......

在一个解决方案中,我有一个WCF服务。在另一个解决方案中我有一个RIA应用程序。由于这两者之间的SQL数据库是相同的,我想创建一个单独的项目,在其中托管edmx文件以及域服务。如果我直接在WCF项目中创建edmx文件,并在RIA端执行相同的操作,那么一切正常。

但是当我尝试将这个edmx文件拉入一个单独的项目并添加对它的引用时,我得到了各种奇怪的错误,我的实体对象无法找到。 WCF服务本身似乎很好,因为它引用了edmx项目并且编译得很好。

但是WCF客户端项目具有对WCF服务的服务引用,它会对实体引用产生影响。即使添加edmx程序集也没有真正帮助 - 某些实体被发现其他实体没有。很奇怪。

任何人都知道我错过了什么?

2 个答案:

答案 0 :(得分:2)

在尝试使用该模型的所有项目中复制连接字符串。 但是,在连接字符串中,删除OR'd资源指针。

e.g。完整实体连接

<connectionStrings>

    <add name="AwesomeEntityModel" 
         connectionString="metadata=res://*/AwesomeEntityModel.csdl|res://*/AwesomeEntityModel.ssdl|res://*/AwesomeEntityModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=.\sqlexpress;initial catalog=NEILHIGHLEY.COM;integrated security=True;multipleactiveresultsets=True;App=EntityFramework&quot;" 
         providerName="System.Data.EntityClient" />
</connectionStrings>

将其修剪为以下内容;

<connectionStrings>
    <add name="AwesomeEntityModel" 
         connectionString="metadata=res://*;provider=System.Data.SqlClient;provider connection string=&quot;data source=.\sqlexpress;initial catalog=NEILHIGHLEY.COM;integrated security=True;multipleactiveresultsets=True;App=EntityFramework&quot;" 
         providerName="System.Data.EntityClient" />
</connectionStrings>

答案 1 :(得分:0)

根据您到目前为止发布的内容,并确保“edmx”项目具有一个新的命名空间,该命名空间也被其他项目使用。

如果我正在读你正确说的话:

  • 您的WCF服务器引用“edmx” 项目
  • 您的WCF客户端引用WCF 服务器和“edmx”项目。

它可能像循环引用冲突一样简单。确保两个其他项目中的任何“edmx”引用数据都不公开,以防客户端从服务器项目中获取“edmx”数据。

同时检查缺失的项目是否保留在内部的默认可访问性(未定义时)。