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;
        }
    }

但是,如果我取消注释现在已注释掉的两行,我将停止接收数据并在我的输出窗口中收到上述错误消息。

另外,如果我添加此行

  ,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 回答