2012-03-06 191 views
2

我在一个解决方案中有三个C#ASP.NET MVC2项目。为简单起见,名称已被更改。ADO.Net:在解决方案中的多个项目之间共享实体(.edmx)

解决方案是MY_COMPANY_SITES。

它有三个项目:CUSTOMER_SITE,INTRANET_SITE,CENTRAL_REPOSITORY。

... CUSTOMER_SITE和INTRANET_SITE项目都有自己的ADO.Net实体模型,通过EDMX生成并连接到它们自己的数据库。 CENTRAL_REPOSITORY项目包含第三个ADO.Net实体模型,与其自己的数据库链接。

这是需要我的情况,这三个数据库是分开的;在这里解释需要很长的时间。

我需要做的是:给CUSTOMER_SITE和INTRANET_SITE两个访问权限,除了它们自己的CENTRAL_REPOSITORY ADO.Net实体。

即,下面的代码应该工作:

CUSTOMER_Entities custDb = new CUSTOMER_Entities(); 
CENTRAL_Entities ctrDb = new CENTRAL_Entities(); 

StoreLocation firstLoc = ctrDB.StoreLocations.First(); 

List<Order> orders = (from n in custDb.Orders 
         where n.LocationID == firstLoc.LocationID 
         select n).ToList(); 

...我还喜欢理想,如果我的CENTRAL_REPOSITORY内修改的实体模型,它只是被其他应用程序,因此我不挂我不需要在三者之间复制所有的变化。

我认为必须有一个“正确”的方式来做到这一点。可以非常理解如何使用一些帮助。

谢谢!

UPDATE:

Blindy(下同)指示我发现答案是在Solution Explorer中的CUSTOMER_SITE内的“参考”只是单击鼠标右键,然后单击“添加引用... “,然后选择CENTRAL_REPOSITORY项目,然后单击确定。瞧,一切都应运而生。

但是,它实际上并不能正常工作。具体而言,当我尝试从CUSTOMER_SITE或INTRANET_SITE内访问CENTRAL_REPOSITORY的数据实体,我得到这个错误:

The specified named connection is either not found in the configuration, not intended to be used with the EntityClient provider, or not valid. 

...所以有一些问题,试图从项目中使用的实体,我我不明白是什么。有什么想法吗?

+0

有什么问题? – 2012-03-06 19:28:56

+0

如果您已经有了另外两个引用的第三个项目,那么您可以完全按照您的写法来完成。这里有什么问题? – Blindy 2012-03-06 19:36:00

回答

0

要回答您的问题,您需要在其他两个站点的配置中具有适当的连接字符串,以使您的CENTRAL_REPOSITORY能够使用它来连接。查看原始站点配置并将该连接复制到其他两个站点。

0

您需要在app.config文件中为每个使用linq to entities模型来解决此错误的项目创建一个连接字符串。