【问题标题】:Structuremap with wcf and Entityframework带有 wcf 和 Entityframework 的结构图
【发布时间】:2013-12-20 08:55:41
【问题描述】:

我正在创建一个mvc4应用,解决方案结构如下:

这里DAO层是在Data.EntityFramework中实现的。Service层是为托管服务创建服务和servicehost。CORE层是为所有分层注册。

数据实体层是:

我正在从服务层调用 UnitOfWork,如下所示

public class CandidateService : ICandidateService
        {
            private readonly IUnitOfWork _unitOfWork;

            public CandidateService(IUnitOfWork unitOfWork)
            {
                this._unitOfWork = unitOfWork;
            }

            //public IList<VW_CANDBASICSEARCH> GetAll()
            //{
            //    try
            //    {
            //        var lstCandidate = _unitOfWork.Repository<VW_CANDBASICSEARCH>().All();
            //        var list = lstCandidate.ToList<VW_CANDBASICSEARCH>();
            //        return list;
            //    }
            //    catch (Exception er)
            //    {
            //        throw er;
            //    }
            //}

            public IList<VW_CANDBASICSEARCH> GetSearchCandidate(string strName, string strLocation, string strProfession, string strSkill)
            {
                var lstCandidate = _unitOfWork.Repository<VW_CANDBASICSEARCH>().All().ToList<VW_CANDBASICSEARCH>();
                var lstSearchCan = from can in lstCandidate
                                   where ((strName == null || strName.Length == 0 || (can.CAND_NAME).ToUpper().Contains(strName.ToUpper()))
                                            && (strLocation == null || strLocation.Length == 0 || can.CAND_LOCATION.Equals(strLocation))
                                            && (strProfession == null || strProfession.Length == 0 || can.CAND_PROFESSION.Equals(strProfession))
                                            && (strSkill == null || strSkill.Length == 0 || can.CAND_SKILL.Equals(strProfession)))
                                   select can;
                return lstSearchCan.ToList<VW_CANDBASICSEARCH>();
            }


            public TBLCANDIDATE_HEADER CreateCandidate(TBLCANDIDATE_HEADER Candidate)
            {
                Candidate.ObjectState = ObjectState.Added;
                _unitOfWork.Repository<TBLCANDIDATE_HEADER>().Insert(Candidate);
                return Candidate;

            }
        }

在 CORE 层中,我正在注册数据和业务,如下所示;

public class BusinessLogicServiceModule : Registry
        {


            public BusinessLogicServiceModule()
            {
                For(typeof(IHrmsRepository<>)).Use(typeof(Repository<>));
                For<IUnitOfWork>().Use<UnitOfWork>();


            }
        }

在服务主机中,我在http://lostechies.com/jimmybogard/2008/07/30/integrating-structuremap-with-wcf/ 之后实现了这个 在 IHRMS.WEB 中,我正在 Global.asax.cs Application_start 中编写以下内容

 protected void Application_Start()
            {
                AreaRegistration.RegisterAllAreas();

                 WebApiConfig.Register(GlobalConfiguration.Configuration);
                FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
                RouteConfig.RegisterRoutes(RouteTable.Routes);


                ObjectFactory.Configure(x => x.AddRegistry(new BusinessLogicServiceModule()));

                ObjectFactory.Configure(x => x.AddRegistry(new ControllerDependency()));
                ControllerBuilder.Current.SetControllerFactory(new StructureMapControllerFactory());

                BundleConfig.RegisterBundles(BundleTable.Bundles);

                AuthConfig.RegisterAuth();
            }

但是当我运行它时,它给出了以下错误: 结构图异常代码:202 没有为 PluginFamily IHRMS.DAO.Infrastructure.IUnitOfWork、IHRMS.DAO、Version=1.0.0.0、Culture=neutral、PublicKeyToken=null 定义默认实例

我使用 Structuremap 作为 DI。 有人能帮帮我吗?

【问题讨论】:

    标签: wcf entity-framework asp.net-mvc-4 structuremap


    【解决方案1】:

    您的配置对我来说看起来不错。

    我通常通过执行以下操作来解决这些模棱两可的结构映射错误:

    • 验证你注入的类有:
      • 公共构造函数
      • 构造参数依赖项也已在注册表中定义
    • 逐步完成“构建”工作流程
      • 确保在调用之前定义了依赖项
    • 确保 ObjectFactory 的 AssertConfigurationIsValid 和 WhatDoIHave 方法可以直观地确认您具有有效的依赖项配置

    大部分问题都在工作流验证步骤中得到解决,如果在请求结构映射之后配置依赖项,则会引发 202 错误。

    也只是为了确认正在配置的 IUnitOfWork 和 IUnitOfWork 依赖项是同一个对象吧(即:它们是同一个命名空间,什么不是)?

    抱歉,我目前没有答案,但如果您有更多信息,我很乐意提供帮助。

    谢谢, wm

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-18
      • 1970-01-01
      • 2016-12-15
      • 1970-01-01
      相关资源
      最近更新 更多