1
namespace CQGlobal.BackOffice.Domain.RmsRepository
{
    using System;
    using CQGlobal.BackOffice.Domain.RmsModel;
    using CQGlobal.BackOffice.Service.Types;
    using System.Collections.Generic;
    using TmsModel = CQGlobal.BackOffice.Domain.TmsModel;
    using tmsTypes = CQGlobal.BackOffice.Domain.TmsTypes;

    public interface IRiskManagementRepository : IDisposable
    {
        void DataAffectedByPriceChange(List<Tb_ClosingPrice> prices);

        //void DataAffectedByPositionChangeByOrder(List<Tb_OrderImport> orders);

        //IEnumerable<string> DataAffectedByPositionChangeByOrder(List<Tb_OrderImport> orders, ref List<RMSSummary> summary);

        IEnumerable<string> ExecuteNewOrders(List<Tb_OrderImport> orders, bool simulate = false);

        IEnumerable<string> FetchRMSTopics(string search);

        IEnumerable<string> FetchRMSTopics(string search, string orderby="AcctNo", int page=0, int size=0);

        IEnumerable<RMSDisplay> FetchRMSSummary(string search);

        IEnumerable<RMSDisplay> FetchRMSSummary(string search, string orderby = "AcctNo", int page = 0, int size = 0);

        IEnumerable<RMSDisplay> FetchRMSSummaryByTopic(List<string> topics, long companyId);

        IEnumerable<string> InsertRiskManagementSummaryRemarks(Tb_RiskManagementSummaryRemarks remark);

        IEnumerable<string> UpdateRiskManagementSummaryRemarks(Tb_RiskManagementSummaryRemarks remark);

        IEnumerable<string> DeleteRiskManagementSummaryRemarks(Tb_RiskManagementSummaryRemarks remark);

        IEnumerable<string> DeleteRiskManagementSummaryRemarks(Guid recordId);

        IEnumerable<Tb_RiskManagementSummaryRemarks> FetchSummaryRemarks(string acctNo, long companyId, int period = 0);

        #region "RMS details"

        IEnumerable<Tb_CashRPValuationCollateral> FetchValuationCollateral(long companyId, string acctNo = null, string currCd = null, long fundSourceID = 0);

        IEnumerable<Tb_CustodyAssetsRPValuationCollateral> FetchValuationCollateral(long companyId, string acctNo = null, string currCd = null, long fundSourceID = 0, long instrumentId = 0, long productId = 0);

        IEnumerable<Tb_NonEquityAssetsValuationCollateral> FetchValuationCollateral(long companyId, string acctNo = null, string assetNo = null);

        IEnumerable<TmsModel.Tb_Transactions> FetchTMSTransactions(long companyId, string acctNo = null, string transNo = null, string transGroupNo = null, string currCd = null, long fundSourceID = 0);

        IEnumerable<Tb_ContractOutstanding> FetchOutstandingContracts(long companyId, string acctNo = null, string contractNo = null, short contractPartNo = -1, string currCd = null, long fundSourceID = 0);

        IEnumerable<TmsModel.Tb_ContractOutstanding> FetchTMSOutstandingContracts(long companyId, string acctNo = null, string contractNo = null, short contractPartNo = -1, string currCd = null, long fundSourceID = 0);

        IEnumerable<Tb_OrderImport> FetchOrders(long companyId, string acctNo = null, long orderNo = 0, long subOrderNo = -1, string currCd = null);

        IEnumerable<TmsModel.Tb_ContractOutstanding> FetchExecutedOrdersAndTMSContracts(long companyId, string acctNo = null, string currCd = null);

        Tb_Date FetchBusinessDate(long companyId = 0);

        #endregion "RMS details"

    }
}








[LogOperation]
[LogServiceErrors]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Multiple, InstanceContextMode = InstanceContextMode.PerCall)]
public class RmsOrchestrationContext : EntityService<IRiskManagementRepository>,  CQGlobal.BackOffice.Service.Types.Contracts.IRmsContract
    {
        public string DoWork(string work)
        {
            //System.Diagnostics.Trace.WriteLine("Called From Service");
            return string.Format("You entered: {0}", work);
        }


 public IEnumerable<RMSDisplay> SearchSummary(string filter,string ordering="AccountNo",int pageNo=0, int pageSize=0)
        {
            try
            {
                using (IRiskManagementRepository repo = new RiskManagementRepository())
                {
                    return repo.FetchRMSSummary(filter, ordering, pageNo, pageSize);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
            }

        }




namespace CQGlobal.BackOffice.Service.Types
{
    using System;
    using System.Runtime.Serialization;
    using System.Text;
    using System.Collections.Generic;

    [DataContract(IsReference = true, Namespace = "http://www.cqglobal.com/rms/")]
    [Serializable]
    public class RMSDisplay
    {
        [DataMember]
        public System.DateTime ReportDate { get; set; }

        [DataMember]
        public string RecordType { get; set; }

        [DataMember]
        public string AggregateLevel { get; set; }

        [DataMember]
        public string AcctNo { get; set; }

        [DataMember]
        public long CompanyId { get; set; }

        [DataMember]
        public string CurrCd { get; set; }

        [DataMember]
        public int SchemeId { get; set; }

        [DataMember]
        public decimal ExchRate { get; set; }

        [DataMember]
        public decimal LedgerBFBalance { get; set; }

        [DataMember]
        public decimal EquitySettlement { get; set; }

        [DataMember]
        public decimal Adjustment { get; set; }

        [DataMember]
        public decimal RealisedPL { get; set; }

        [DataMember]
        public decimal CommissionCharges { get; set; }

        [DataMember]
        public decimal OptionPremium { get; set; }

        [DataMember]
        public decimal LedgerRPBalance { get; set; }

        [DataMember]
        public decimal CollateralRPBalance { get; set; }

        [DataMember]
        public decimal UnrealisedPLBalance { get; set; }

        [DataMember]
        public decimal MarginIM { get; set; }

        [DataMember]
        public decimal MarginMM { get; set; }

        [DataMember]
        public decimal MarginIMExcessDeficit { get; set; }

        [DataMember]
        public decimal MarginIMRPExcessDeficit { get; set; }

        [DataMember]
        public decimal MarginMMExcessDeficit { get; set; }

        [DataMember]
        public decimal MarginMMRPExcessDeficit { get; set; }

        [DataMember]
        public System.DateTime LastUpdated { get; set; }

        [DataMember]
        public string AcctExecutiveCd { get; set; }

        [DataMember]
        public Nullable<System.Guid> RecordId { get; set; }

        [DataMember]
        public string Topic { get; set; }

        [DataMember]
        public string Remarks { get; set; }

        [DataMember]
        public int Page { get; set; }

        [DataMember]
        public int Size { get; set; }

        [DataMember]
        public int TotalCount { get; set; }

        [DataMember]
        public List<string> ValidationErrors { get; set; }

        *[DataMember]
        public string ClientName { get; set; }*



        #region IExtensibleDataObject Members

        public ExtensionDataObject ExtensionData { get; set; }

        #endregion IExtensibleDataObject Members
    }
}

Visual Studio 2010 バージョンでサービスを作成しました。その後、Visual Studio 2012 にアップグレードしました。コントラクトにプロパティを追加すると、ClientName はこのプロパティに null 値を取得しました。私はすでにフィールドに注文を入れようとしましたが、値をハードコーディングしても期待した値が得られません。また、AppPool のリサイクルを試み、PC を再起動してもエラーが発生します。申し訳ありませんが、この関数 repo.FetchRMSSummary(filter、ordering、pageNo、pageSize) の実際の実装は示していません。サーバー側でトレースしたように値がありますが、サービスを使用すると正しい値を取得できません。私のプロパティはnullobjectになりますが、残りの古いプロパティには正しい値があります。

私を助けてください。

4

2 に答える 2

0

私はすでに問題を解決しました。実際には、サービスのパフォーマンスを向上させるためにコントラクトのシリアライザーを作成しましたが、クライアントがシステムにキャッシュするために奇妙な振る舞いをする古いものを取得すると、何か問題が発生します。

于 2013-05-10T17:20:17.903 に答える
0

オブジェクトの逆シリアル化をオーバーライドしてデバッグしようとします。逆シリアル化が失敗したときに、同様の問題が発生しました。

于 2013-04-27T15:25:11.183 に答える