0

これを見つけたとき、問題の解決策を見つけたと思いました、うまくいきませんでした。

デバッグ モードで実行するとWcfTestClient、データが取得されず、次のエラーが表示されます。

A first chance exception of type 'System.NotSupportedException' occurred in System.Data.Entity.dll
The thread '<No Name>' (0x1b50) has exited with code 0 (0x0).
The program '[7040] WCFTestClient.exe: Managed (v4.0.30319)' has exited with code 0 (0x0).....................................

データを取得するのは次のメソッドです。

public List<WShortDeal> Test()
    {
        try
        {
            return entities.ProductInstance_Deal
                .Select(d => new WShortDeal()
                {
                    Id = d.Deal.Id
                   // ,
                   // Name = d.Deal.Deal_Language.SingleOrDefault(l => l.Language.Id == 1).Name**
                    ,
                    NewPrice = (double)d.ProductInstance.Price * (1 - d.Deal.SalesPercentage / 100)
                    ,
                    OldPrice = (double)d.ProductInstance.Price
                    ,
                    Valuta = d.ProductInstance.Valuta.ValutaCode
                    ,
                    Type = d.Deal.Type
                    ,
                    IdCompanyAccount = d.ProductInstance.IdCompanyAccount
                })
                    .ToList();
        }
        catch (Exception)
        {
            return null;
        }
    }

ただし、現在コメントアウトされている 2 行のコメントを解除すると、データの受信が停止し、出力ウィンドウに上記のエラー メッセージが表示されます。

また、この行を追加すると

  ,ProductCategory = d.ProductInstance.ProductType.ProductCategory.ProductCategory_Language.Where(pcl => pcl.IdLanguage == idLanguage).Single().Name

線の代わりに

 , Name = d.Deal.Deal_Language.SingleOrDefault(l => l.Language.Id == 1).Name

元の SELECT ステートメントに対しても、データは返されません。したがって、言語テーブル (??) との多対多の関係を表すすべてのテーブルと関係があるのではないかと思います。「ProductCategory_Language」テーブルとの結合を忘れたときはいつでも、データを再度取得できるからです。

誰か助けてくれませんか?私の問題に対する別の解決策はありますか?私は今、この問題に何日も苦労しています:(事前に感謝します。

4

1 に答える 1

0

名前を選択する前に行が null を返す場合はどうなりますか? 試す

  Name = d.Deal.Deal_Language.Where(l => l.Language.Id == 1)
         .Select(s=>s.Name).SingleOrDefault()
于 2012-07-17T09:22:39.220 に答える