三沣开发知识 购物 网址 游戏 小说 歌词 地图 快照 股票 美女 新闻 笑话 | 汉字 软件 日历 阅读 下载 图书馆 开发 租车 短信 China
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
vbs/VBScript DOS/BAT hta htc python perl 游戏相关 VBA 远程脚本 ColdFusion ruby专题
autoit seraphzone PowerShell linux shell Lua Golang Erlang 其它教程 CSS/HTML/Xhtml
html5 CSS XML/XSLT Dreamweaver教程 经验交流 开发者乐园 Android开发资料
站长资讯 .NET新手 ASP.NET C# WinForm Silverlight WCF CLR WPF XNA VisualStudio ASP.NET-MVC .NET控件开发 EntityFramework WinRT-Metro Java C++ PHP Delphi Python Ruby C语言 Erlang Go Swift Scala R语言 Verilog 其它语言 架构设计 面向对象 设计模式 领域驱动 Html-Css JavaScript jQuery HTML5 SharePoint GIS技术 SAP OracleERP DynamicsCRM K2 BPM 信息安全 企业信息 Android开发 iOS开发 WindowsPhone WindowsMobile 其他手机 敏捷开发 项目管理 软件工程 SQLServer Oracle MySQL NoSQL 其它数据库 Windows7 WindowsServer Linux
  IT知识库 -> 架构设计 -> MVC模式下unity配置,即DI(依赖注入)& IOC(控制反转)> 报错“No connection string named '**Context' could be found in the application config file” -> 正文阅读
 

[架构设计]MVC模式下unity配置,即DI(依赖注入)& IOC(控制反转)> 报错“No connection string named '**Context' could be found in the application config file”

MVC模式下unity配置,即DI(依赖注入)& IOC(控制反转)> 报错“No connection string named '**Context' could be found in the application config file”    写在前面: 第一次配置时好好的,后来第二次改到MVC模式,把依赖注入写成字典的单例模式时,由于新建的ORM(数据库映射模型EF),怎么弄都不用,一直报错"No connection string named '**Context' could be found in the application config file"(配置文件中找不到数据库context连接)调试了两小天问题,终于想到了是没有把EF模型中appconfig中的数据库连接复制到项目webconfig中导致的!!!改过之后果然好了,豁然开朗!
  中间也发现了一个小的点:调试的时候因为配置有问题,就改成不用配置直接写的方式:(如下)

            UnityContainer container = new UnityContainer();
             container.RegisterType<DbContext, JDContext>();
            container.RegisterType<IBaseService, BaseService>();
            container.RegisterType<IUserMenuService, UserMenuService>();

            IBaseService baseService = container.Resolve<IBaseService>();
            IUserMenuService userservice = container.Resolve<IUserMenuService>();
            JD_User a = userservice.Set<JD_User>().FirstOrDefault();        

然后就报错BaseService是抽象类 不能实例化。 后来发现 这句不需要写出来
IBaseService baseService = container.Resolve<IBaseService>();
因为 IUserMenuService 继承了 IBaseService    实现IUserMenuService的时候自然就把基类带出来了实现了。  
困惑了一天半 终于解决了。
以下是DI工厂实现

namespace Common
{
    public class DIFactory
    {
        private static object _syncHelper = new object();
        private static Dictionary<string, IUnityContainer> _UnityContainerDic = new Dictionary<string, IUnityContainer>();

        public static IUnityContainer GetContainer(string containerName = "JDContainer")
        {
            if (!_UnityContainerDic.ContainsKey(containerName))
            {
                lock (_syncHelper)
                {
                    if (!_UnityContainerDic.ContainsKey(containerName))
                    {
                        IUnityContainer container = new UnityContainer();
                        ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap();
                        fileMap.ExeConfigFilename = Path.Combine(AppDomain.CurrentDomain.BaseDirectory + "CfgFiles\\Unity.Config.xml");
                        Configuration configuration = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);
                        UnityConfigurationSection section = (UnityConfigurationSection)configuration.GetSection(UnityConfigurationSection.SectionName);
                        section.Configure(container, containerName);

                        _UnityContainerDic.Add(containerName, container);
                    }
                }
            }
            return _UnityContainerDic[containerName];
        }
    }
}

以下是unity文件配置  (即上文代码中的 Unity.Config.xml )

<configuration>
  <configSections>
    <section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration"/>
  </configSections>
  <unity>
    <sectionExtension type="Microsoft.Practices.Unity.InterceptionExtension.Configuration.InterceptionConfigurationExtension, Microsoft.Practices.Unity.Interception.Configuration"/>
    <containers>
      <container name="JDContainer">
        <!--<register type="Interface.ITest, Interface" mapTo="Service.Test, Service" />-->
        <register type="System.Data.Entity.DbContext, EntityFramework" mapTo="EF.Model.JDContext, EF.Model"/>
        <register type="Interface.IBaseService, Interface" mapTo="Service.BaseService, Service" />
        <register type="Interface.IUserMenuService, Interface" mapTo="Service.UserMenuService, Service" />
      </container>
      <!--<container name="testContainer">
        <register type="Interface.ITest, Interface" mapTo="Service.Test, Service" />
        <register type="System.Data.Entity.DbContext, EntityFramework" mapTo="EF.yuncaidbEntities, EF"/>
        <register type="Interface.IBaseService, Interface" mapTo="Service.BaseService, Service" />
        <register type="Interface.IUserService, Interface" mapTo="Service.UserService, Service" />
      </container>-->
    </containers>
  </unity>
</configuration>

  架构设计 最新文章
前端设计的BB鸟规则
mybatis的搭建和注入spring的方式
架构师之路
2017年末,聊聊现在的三层架构
微服务架构中API网关的角色
springMvc+hibernate的web application的构
MMORPG大型游戏设计与开发(客户端架构 par
Warrior!之家与Warrior!博客网站发布
零售行业解决方案一
[转载]协程
上一篇文章      下一篇文章      查看所有文章
加:2017-10-12 23:24:39  更:2017-10-12 23:24:46 
 
技术频道: 站长资讯 .NET新手区 ASP.NET C# WinForm Silverlight WCF CLR WPF XNA Visual Studio ASP.NET MVC .NET控件开发 Entity Framework WinRT/Metro Java C++ PHP Delphi Python Ruby C语言 Erlang Go Swift Scala R语言 Verilog 其它语言 架构设计 面向对象 设计模式 领域驱动设计 Html/Css JavaScript jQuery HTML5 SharePoint GIS技术 SAP Oracle ERP Dynamics CRM K2 BPM 信息安全 企业信息化其他 Android开发 iOS开发 Windows Phone Windows Mobile 其他手机开发 敏捷开发 项目与团队管理 软件工程其他 SQL Server Oracle MySQL NoSQL 其它数据库 Windows 7 Windows Server Linux
脚本语言: vbs/VBScript DOS/BAT hta htc python perl 游戏相关 VBA 远程脚本 ColdFusion ruby专题 autoit seraphzone PowerShell linux shell Lua Golang Erlang 其它教程
网站开发: CSS/HTML/Xhtml html5 CSS XML/XSLT Dreamweaver教程 经验交流 开发者乐园 Android开发资料
360图书馆 软件开发资料 文字转语音 购物精选 软件下载 美食菜谱 新闻资讯 电影视频 小游戏 Chinese Culture 股票 租车
生肖星座 三丰软件 视频 开发 短信 中国文化 网文精选 搜图网 美图 阅读网 多播 租车 短信 看图 日历 万年历 2017年10日历
2017-10-22 7:15:06
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT知识库