-2
これは私がやりたがっていることです:ビューに送信して表示できるコントローラ内のバッチオブジェクトのリストを取得します。それは働いていますが、値は混在しています。データベース内の値がNULLまたは0の場合、照会はレコード内の別の非NULL値で照会します。ここに例があります。IQueryableはヌル値を他の値で塗りつぶします
Database Content
Id:13
TotalRequest : 10
TotalProcessed :0
CreatedDateTime:2017-01-13 13:30:46.090
CreatedBy:Test
CompletionDateTime : NULL
Iqueryable at position 13 content
Id:13
TotalRequest : 10
TotalProcessed :10
CreatedDateTime:2017-01-13 13:30:46.090
CreatedBy:Test
CompletionDateTime : NULL
TotalProcessedが正しくないことがわかります。また、私のオブジェクトのいずれかにNULLでないCompletionDateTimeを持って、一覧は気にせず、常にnull
を出力コードの場合:
IQueryable<Batch> IBatchList = context.batch.OrderByDescending(b => b.CreatedDateTime);
var batchList = IBatchList.ToList();
バッチクラス(コード最初のDB、それはですので、 DBの定義だけでなく)
public class Batch
{
[Key]
public Int64 Id { get; set; }
public int TotalRequested { get; set; }
public int TotalProcessed { get; set; }
public DateTime CreatedDateTime { get; set; }
public string CreatedBy { get; set; }
public DateTime? CompletedDateTime { get; set; }
}
Id TotalRequested TotalProcessed CreatedDateTime CreatedBy CompletedDateTime
13 10 0 2017-01-13 13:30:46.090 Test NULL
はここでのIQueryableからクエリです:
{SELECT
[Extent1].[Id] AS [Id],
[Extent1].[TotalRequested] AS [TotalRequested],
[Extent1].[TotalProcessed] AS [TotalProcessed],
[Extent1].[CreatedDateTime] AS [CreatedDateTime],
[Extent1].[CreatedBy] AS [CreatedBy],
[Extent1].[CompletedDateTime] AS [CompletedDateTime]
FROM [dbo].[Batch] AS [Extent1]
ORDER BY [Extent1].[CreatedDateTime] DESC}
バッチクラスとコンテキストクラスを投稿してください。 –
IQueryableはインターフェイスであり、何も記入しません。 LINQは単なるクエリ言語であり、値を変更しません。最後に、LINQ to EFはSQL文を生成しますが、データ自体は変更されません。 a)クラス定義b)テーブルスキーマc)影響を受けた行なしでは助けが不可能です。あなたは間違った行を見ているかもしれませんし、クラスのプロパティがnullを置き換えているかもしれません。あるいは基礎となるクエリがあなたが思ったものと異なるかもしれません。 –
生成されたSQLクエリを、たとえばSQL Server Profilerで確認します。データベースに対してクエリを実行するとどうなりますか? –