2011-05-23 71 views
0

我有一个类库,它有自己的模型和连接到数据库的连接字符串。独立,这工作都很好,从数据库中检索数据没有问题。这个库的想法是在另一个应用程序中创建一个dll和引用。如何在mvc3项目中使用引用dll的模型

在我的情况下,我有一个MVC3的Web应用程序与它自己的模型和connectionstring。我引用了类库,添加了第二个连接字符串,并构建了整个应用程序。但是,当我运行应用程序并实际调用引用库中的方法时,我得到一个EntitySqlException,说“'MyTable'无法在当前范围或上下文中解析。确保所有引用的变量都在范围内,被加载,并且名称空间被正确引用。在转义标识符附近,第1行,第1列。“

我确信,引用库的模型文件也复制到了MVC项目的bin目录,我的web.config看起来像这样:

<configSections> 
<section name="DefaultArchitecture" type="DefaultArchitectureConfiguration"/> 
</configSections> 

<DefaultArchitecture defaultContainerName="defaultContainer" connectionStringName="defaultContainer"/> 

<connectionStrings> 
<add name="defaultContainer" connectionString="metadata=res://*/MvcModel.csdl|res://*/MvcModel.ssdl|res://*/MvcModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=cloudaddress;Initial Catalog=main catalog;User ID=user;Password=pass;Encrypt=true;Trusted_Connection=false;trustServerCertificate=true&quot;" providerName="System.Data.EntityClient" /> 
<add name="secondContainer" 
    connectionString="metadata=~\bin\libmodel.csdl| 
           ~\bin\libmodel.ssdl| 
           ~\bin\libmodel.msl; 
         provider=System.Data.SqlClient; 
         provider connection string=&quot; 
         data source=cloudaddress; 
         initial catalog=othercatalog; 
         persist security info=True; 
         user id=user; 
         password=pass; 
         multipleactiveresultsets=True; 
         App=EntityFramework&quot;" 
     providerName="System.Data.EntityClient" /> 

如果我改变defaultcontainername到第二个容器......它适用于引用的库,但当然不再是defaultcontainer。

问题是......我怎样才能在我的mvc项目中使用这两种模型,通过使用它自己的模型(和自己的数据库)引用类库,而不存在无法解析其中一个实体的问题。

希望我的问题很清楚。如果没有,请让我知道,这样我可以提供更多信息。

回答

0

最终证明是一个上下文问题。调用类库时,我仍然使用错误的上下文。我通过实施一个无与伦比的方法并转换到创建图书馆服务级别的正确上下文来解决这个问题。