public BaseResult AddContactor(int userId, Contactor contactor, int compId) { var rs = new BaseResult { State = false, Value = -1, Desc = "数据操作层初始化" }; if (userId <= 0) { rs.Failed(-101, "userId无效"); return rs; } if (contactor.Equals(null)) { rs.Failed(-101, "contactor无效"); return rs; } _desc = "某个终端客户添加一个联系人,含分组,联系方式"; _procName = "UP_Addr_Contactor_AddContactor"; _methodName = MethodBase.GetCurrentMethod().Name; _log = new LogBuilder { Method = string.Format("类[{0}]方法[{1}]", ClassName, _methodName), Desc = _desc, Database = _databaseName, StroreProcedure = _procName }; _log.Append("userId", userId); try { //联系方式xml var wayClass = new XMLContactWayClass { XmlContactWay = contactor.CWays.Select( way => new XmlContactWay { ContactWayType = way.ContactWayType, Way = way.Way }).ToArray() }; var wayData = XmlHelper.XmlSerializer<XMLContactWayClass>(wayClass); wayData = wayData.Replace("<?xml version=\"1.0\" encoding=\"utf-8\"?>", ""); //分组xml var groupClass = new XMLContactGroupClass { XmlContactGroup = contactor.CGroups.Select( @group => new XmlContactGroup { ContactorGroupID = @group.ContactorGroupID }).ToArray() }; var groupData = XmlHelper.XmlSerializer<XMLContactGroupClass>(groupClass); groupData = groupData.Replace("<?xml version=\"1.0\" encoding=\"utf-8\"?>", ""); var parameters = new[] { _addrDatabase.MakeInParam("@userId", SqlDbType.Int, 4, userId), _addrDatabase.MakeInParam("@CompID", SqlDbType.Int, 4, compId), _addrDatabase.MakeInParam("@Name", SqlDbType.VarChar, 20, contactor.ContactorName), _addrDatabase.MakeInParam("@ContactWay", SqlDbType.Xml, int.MaxValue, wayData), _addrDatabase.MakeInParam("@ContactGroup", SqlDbType.Xml, int.MaxValue, groupData), _addrDatabase.MakeInParam("@ConfParticipatePhoneNo",SqlDbType.VarChar,50,contactor.ConfParticipatePhoneNo) }; _addrDatabase.ExecuteProc(_procName, parameters, out _result); if (_result != 0) { rs.Failed(-2, "todo"); return rs; } } catch (Exception ex) { rs.Failed(-1, ex.ToString()); _log.Exception = string.Format("{0},发生异常:{1}", _desc, ex.Message); _log.Error(); return rs; } finally { _addrDatabase.Close();//仅显式关闭链接,不做其它操作 } rs.Success(); return rs; }