ADO.Net:在解决方案中的多个项目之间共享实体(.edmx)

时间:2012-03-06 19:20:10

标签: c# asp.net visual-studio asp.net-mvc-2 ado.net

我在一个解决方案中有三个C#ASP.NET MVC2项目。为简单起见,名称已被更改。

解决方案是MY_COMPANY_SITES。

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

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

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

我需要做的事情:除了他们自己的实体之外,还要给CORTOMER_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中修改实体模型,它也只是更喜欢它,它只是由其他应用程序链接,所以我不必复制所有三个中的所有更改。

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

谢谢!

更新

Blindy(下面)指示我找到答案只是右键单击解决方案资源管理器中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.

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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