-1

EF をフィルタリングしているときに null refrence 例外が発生しますが、まったく無知です。

ここに画像の説明を入力

public IEnumerable<TonalityBatchModel> GetTonalityBatch(int briefID)
{
    try
    {
        var brief = NeptuneUnitOfWork.Briefs.FindWhere(b => b.ID == briefID).FirstOrDefault();

        if (brief != null && brief.TonalityCriteria != null)
                    {
                        return brief.TonalityCriteria.TonalityBatches
                                    .Select(b => new TonalityBatchModel()
                                        {
                                            BriefID = b.BriefID,
                                            Status = b.TonalityCriteria.IsActive == true ?"Active":"Ended",
                                            BatchID = b.ID,
                                            CompetitorID = b.BriefCompetitorID,
                                            Competitor = brief.BriefCompetitors.Where(i=>i.ID == b.BriefCompetitorID).Select(c=>c.Organisation.Name).First(),
                                            Size = b.BatchSize,
                                            StartDate = b.StartDate,
                                            EndDate = b.EndDate,
                                            IsPublished = b.Lookup_TonalityBatchStatus.ID == (int)TonalityBatchStatus.Published?"Yes":"No",
                                            IsCompleted = b.Lookup_TonalityBatchStatus.ID == (int)TonalityBatchStatus.Completed ? "Yes" : "No",
                                            IsAssigned = b.Lookup_TonalityBatchStatus.ID == (int)TonalityBatchStatus.Allocated ? "Yes" : "No",
                                            ImportantCount = b.TonalityItems.Count(i=> i.IsImportant),
                                            ArticlesCount = b.TonalityItems.Count,
                                            FavourableCount = b.TonalityItems.Count(i => i.Lookup_TonalityScoreTypes.ID ==(int)TonalitySourceType.Favourable),
                                            UnfavourableCount = b.TonalityItems.Count(i => i.Lookup_TonalityScoreTypes.ID ==(int)TonalitySourceType.Unfavourable),
                                            NeutralCount = b.TonalityItems.Count(i => i.Lookup_TonalityScoreTypes.ID ==(int)TonalitySourceType.Neutral)

                                        }).ToList();
                    }

                    return new List<TonalityBatchModel>();

            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw;
            }
        }
4

2 に答える 2

0

これは、カウントが null レコードを返しているためだと思います。私は間違っているかもしれませんが、ここで生成されている SQL は次のようなものです。

INNER JOIN TonalityItems i on i.Lookup_TonalityScoreTypes == x

xの値はどこにありますか(int)TonalitySourceType.Favourable。この結合には一致する結果がないため、実行することは何もありませんcount?? 0クエリの最後に追加してみてください。

FavourableCount = b.TonalityItems.Count(i => i.Lookup_TonalityScoreTypes.ID ==(int)TonalitySourceType.Favourable) ?? 0,
于 2013-08-16T15:12:37.487 に答える