C# 外部WCF服务库如何获取系统数据库连接?

新手上路,请多包涵

外部WCF服务库获取不到系统内部的数据库连接!以下称之为EntityManager.

我创建了一个外部的WCF服务库,然后将WCF服务库寄宿在Windows Service上进行部署。当我在系统内通过Form直接访问Form相关Task的时候,我可以直接在Task中获取到系统的EntityManager,从而在接口内部去实现数据库相关操作。

我现在遇到的问题是:当我的WCF服务库作为一个外部库进行部署时,将不会有系统Form去直接调用接口实现的Task,我自然也没法获得系统内部的EntityManager。这也就导致了我的接口无法完整运行。

当我用Form表单直接执行LoginJobTask可以获取到EntityManager,但是当整个WCF服务库单独部署出去的时候,我就获取不到了!

[SampleManagerTask("LoginJobTask")] // 将当前类标记为Task
    public class LoginJobTask : SampleManagerTask // SampleManagerTask为所有Task的父类,数据库操作对象(下文中的EntityManager)也来自这个父类,
    {

        public string LoginSingleJobByWorkflow(string json)
        {
            
            ResponseSingle resp = ResponseUtil.GetDefaultResponse();
            try
            {
                string errMsg = string.Empty;
                // 校验Json数据是否合法
                if (!JsonUtil.IsValid(json))
                {
                    errMsg = string.Format("{0} JSON Data:{1}", ExceptionConstant.INVALID_JSON_DATA, json);
                    Logger.Error(errMsg);
                    return JsonUtil.ObjectToJsonStr(new ResponseSingle("", ResponseUtil.CODE_FAIL, ExceptionConstant.INVALID_JSON_DATA, errMsg));
                }
                // 将Json字符串转化为Json对象
                JObject jObject = JsonUtil.JsonStrToJsonObject(json);

                // 获取Type
                JToken type = jObject[WebInterfaceWorkflowConfigPropertyNames.Type];
                // 判断Type字段信息
                if (JsonUtil.IsEmpty(type))
                {
                    errMsg = string.Format("Property {0} do not exist.", WebInterfaceWorkflowConfigPropertyNames.Type);
                    Logger.Error(errMsg);
                    return JsonUtil.ObjectToJsonStr(new ResponseSingle("", ResponseUtil.CODE_FAIL, errMsg, errMsg));
                }

                // 获取调用Workflow的配置信息
                IQuery queryWorkflowConfig = EntityManager.CreateQuery(TableNames.WebInterfaceWorkflowConfig);
                queryWorkflowConfig.AddEquals(WebInterfaceWorkflowConfigPropertyNames.Type, type.ToString());
                queryWorkflowConfig.AddAnd();
                queryWorkflowConfig.AddEquals(WebInterfaceWorkflowConfigPropertyNames.Removeflag, false);

因为系统的底层实现以及大量源码都是美国人研发的,并且都做了封装。所以我现在也不清楚系统底层到底是如何往Task中注入EntityManager的。但是我觉得如果各位前辈有做过类似独立WCF服务库开发的,可能也会遇到类似问题,所以在此提问,看能否获得一些提示或启发。谢谢各位前辈!

阅读 1.4k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进