0

2011 年の MS のカスタマー ポータルを拡張して、注文を追加する機能を追加しました。

2 人以上のユーザーが同時に注文を作成しようとすると、問題が発生しました。

まず、SalesOrder を次のように作成しました。

order = new SalesOrder();
order.SalesOrderId = OrderID;
order.Name = string.Format("Order {0}", DateTime.Now); 
order.CustomerId = parentCustomer;
order.PriceLevelId = priceLevel.ToEntityReference();

OrderID = XrmContext.Create(order);

この後、foreachで製品(SalesOrderDetail)を追加しました:

foreach (var product in OrdredProducts)
{
    productToAdd = new SalesOrderDetail
    {
        SalesOrderId = new CrmEntityReference(SalesOrder.EntityLogicalName, 
                                              OrderID),
        ProductId = new EntityReference(Product.EntityLogicalName, 
                                        product.ProductID),
        Quantity = product.Quantity
    };
    XrmContext.Create(productToAdd);
}

これは、1 人のユーザーが何かを注文した場合にうまく機能します。しかし、2 人以上のユーザーの場合、両方のユーザーでエラーが発生します。

だから私はこれにコードを変更しました:

order = new SalesOrder();
OrderID = Guid.NewGuid();
order.SalesOrderId = OrderID;
order.Name = string.Format("Order {0}", DateTime.Now); //:d
order.CustomerId = parentCustomer;
order.PriceLevelId = priceLevel.ToEntityReference();
XrmContext.AddObject(order);

foreach (var product in OrdredProducts)
{
    productToAdd = new SalesOrderDetail
    {
        SalesOrderId = new CrmEntityReference(SalesOrder.EntityLogicalName, 
                                              OrderID),
        ProductId = new EntityReference(Product.EntityLogicalName, 
                                        product.ProductID),
        Quantity = product.Quantity
    };
    XrmContext.AddObject(productToAdd);
}

XrmContext.SaveChanges();

2 人以上のユーザーが何かを注文した場合、最初の試行のように両方が失敗するのではなく、1 人のユーザーだけが失敗するようになりました。

私がこれまでに得たエラー(毎回他のエラー):

  • ValidateOpen - 破棄してはならないときに、破棄された CrmDbConnection に遭遇しました
  • SQL タイムアウトの期限が切れました。
  • 予期せぬエラーが発生した。
  • 組織 {guid) の次の番号 (currentordernumber) を取得中にエラーが発生しました: 戻り値が空です
  • System.InvalidOperationException: Microsoft Dynamics CRM でエラーが発生しました。管理者またはサポートの照会番号: #F60BF6A2

問題がどこにある可能性があるかについての提案はありますか?それは SQL Server/CRM Server/IIS/my code ですか、それとも別のものですか?

追加情報

  • SQL Server と CRM Server が同じマシン上にない
  • VS2012サーバーでテストすると同じエラーが発生します(バックエンドは同じSQL/CRMサーバーです)
  • 1 人のユーザーが IIS で実行し、もう 1 人が VS2012 (デバッグ) で実行すると、同じエラーが発生します。

edit
XrmContext は XrmServiceContext タイプであり、これは CrmOrganizationServiceContext から派生し、これは crmsvcutil で生成されます

4

1 に答える 1