繁体   English   中英

ASP.NET MVC与模型在单独的程序集中

[英]ASP.NET MVC with Model in Separate Assembly

我目前正在开发一个.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。 这在我拥有的第三个项目Windows服务中运行良好,尽管我必须在该项目的App.Config文件中包含连接字符串。

但是,当我尝试使用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>

...我仍然抛出以下异常:

指定的命名连接在配置中找不到,不打算与EntityClient提供程序一起使用,或者无效。

程序集都有不同的命名空间,但由于Windows服务访问它很好,我不认为这是问题。

救命?

谢谢,大卫

PS:我注意到的另一个怪癖是,当告诉Visual Studio创建一个新的强类型视图时,它会生成一个关于模型程序集的文件未找到错误。 我已经看到这个错误在网上讨论了几次没有解决方案。

我不确定这里发生了什么,但Misha N提出了一个很好的问题。

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

超时你的ObjectContext将包含越来越多的对象,因此会减慢速度。 有关原因,请参阅此提示

亚历克斯

单例模式不适用于基于ASP.NET的应用程序,您需要切换到类似于存储库模式的东西,从而在ASP.NET请求级别管理ObjectContext。 有几篇文章讨论过这个问题:

如果您愿意,可以从这里开始: http//www.ef-faq.org/objectcontext.html

希望有所帮助..

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM