如何在mvc3项目中使用引用的dll模型

时间:2011-05-23 11:28:35

标签: reference connection-string models entities

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

在我的情况下,我有一个MVC3 Web应用程序,它有自己的模型和连接字符串。我引用了类库,添加了第二个连接字符串并构建了整个应用程序。但是当我运行应用程序并实际调用引用的库上的方法时,我得到一个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更改为secondcontainer ...它适用于引用的库,但当然不再适用于defaultcontainer。

问题是......我如何在我的mvc项目中使用两个模型,通过引用类库来拥有自己的模型(和自己的数据库),而不会遇到无法解析其中一个实体的问题。

希望我的问题很明确。如果没有,请告诉我,以便我提供更多信息。

1 个答案:

答案 0 :(得分:0)

最终结果是一个上下文问题。调用类库时我仍然使用错误的上下文。我通过实现一个idisposable来修复它,并在创建库的服务类时切换到正确的上下文,然后重新开始处理。