编程语言
首页 > 编程语言> > c#-在单独的程序集中带有模型的ASP.NET MVC

c#-在单独的程序集中带有模型的ASP.NET MVC

作者:互联网

我目前有一个正在开发的.NET解决方案,涉及多个子项目,包括ASP.NET MVC项目.我的模型已分离到一个单独的程序集中,因为我需要在解决方案中的其他各个项目中使用它.

我的模型由ADO.NET实体框架实体模型组成.我决定为模型使用单例模式,并使用以下代码(SalsaEntities是我的实体模型的名称):

partial class SalsaEntities
{
    private static SalsaEntities _instance = new SalsaEntities();

    /// <summary>
    /// Singleton instance of SalsaEntities.
    /// </summary>
    public static SalsaEntities Instance
    {
        get
        {
            return _instance;
        }
    }
}

然后,我从其他程序集中使用SalsaEntities.Instance.尽管我必须在该项目的App.Config文件中包括连接字符串,但在我拥有的第三个项目Windows服务中,该方法仍然可以正常工作.

但是,当我尝试从ASP.NET MVC项目中使用SalsaEntities.Instance时,出现了异常.尽管在项目的根目录和Views目录的Web.config文件中都包含以下内容…

<connectionStrings>
  <add name="SalsaEntities" connectionString="metadata=res://*/SalsaModel.csdl|res://*/SalsaModel.ssdl|res://*/SalsaModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=localhost;Initial Catalog=DbSalsa;Integrated Security=True;Pooling=False;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />
</connectionStrings>

…我仍然抛出以下异常:

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

程序集都有不同的名称空间,但是由于Windows Service可以很好地访问它,所以我认为这不是问题.

救命?

谢谢,
大卫

附注:我注意到的另一个怪癖是,当告诉Visual Studio创建一个新的强类型视图时,它会生成关于模型装配的文件未找到错误.我已经看到此错误在网络上讨论了几次,都没有解决方法.

解决方法:

我不确定这是怎么回事,但Misha N提出了一个很好的问题.

但是我真的认为您应该重新考虑Singleton模式(至少对于MVC应用程序而言).

超时,您的ObjectContext将包含越来越多的对象,结果将放慢速度.有关原因的更多信息,请参见this tip.

亚历克斯

标签:ado-net,ado-net-entity-data-model,c,entity-framework
来源: https://codeday.me/bug/20191107/2002416.html