我有一些重构麻烦,也许有人知道为什么......
在一个解决方案中,我有一个WCF服务。在另一个解决方案中我有一个RIA应用程序。由于这两者之间的SQL数据库是相同的,我想创建一个单独的项目,在其中托管edmx文件以及域服务。如果我直接在WCF项目中创建edmx文件,并在RIA端执行相同的操作,那么一切正常。
但是当我尝试将这个edmx文件拉入一个单独的项目并添加对它的引用时,我得到了各种奇怪的错误,我的实体对象无法找到。 WCF服务本身似乎很好,因为它引用了edmx项目并且编译得很好。
但是WCF客户端项目具有对WCF服务的服务引用,它会对实体引用产生影响。即使添加edmx程序集也没有真正帮助 - 某些实体被发现其他实体没有。很奇怪。
任何人都知道我错过了什么?
答案 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="data source=.\sqlexpress;initial catalog=NEILHIGHLEY.COM;integrated security=True;multipleactiveresultsets=True;App=EntityFramework""
providerName="System.Data.EntityClient" />
</connectionStrings>
将其修剪为以下内容;
<connectionStrings>
<add name="AwesomeEntityModel"
connectionString="metadata=res://*;provider=System.Data.SqlClient;provider connection string="data source=.\sqlexpress;initial catalog=NEILHIGHLEY.COM;integrated security=True;multipleactiveresultsets=True;App=EntityFramework""
providerName="System.Data.EntityClient" />
</connectionStrings>
答案 1 :(得分:0)
根据您到目前为止发布的内容,并确保“edmx”项目具有一个新的命名空间,该命名空间也被其他项目使用。
如果我正在读你正确说的话:
它可能像循环引用冲突一样简单。确保两个其他项目中的任何“edmx”引用数据都不公开,以防客户端从服务器项目中获取“edmx”数据。
同时检查缺失的项目是否保留在内部的默认可访问性(未定义时)。