[英]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="Data Source=localhost;Initial Catalog=DbSalsa;Integrated Security=True;Pooling=False;MultipleActiveResultSets=True"" 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.