Entity Framework と熱心な読み込みに問題があります。小数を含む複数のコレクションを読み込みたい場合、最初の 2 つのインクルードのみが正しいデータを提供します。3 番目のインクルードは、コンマ区切りなしの数値を提供します: これが私のモデルです:
public class ShoppingBasket
{
[Key]
public int ID { get; set; }
public decimal PriceTotal { get; set; }
public ICollection<Article> ArticelsA { get; set; }
public ICollection<Article> ArticelsB { get; set; }
public ICollection<Article> ArticelsC { get; set; }
}
public class Article
{
[Key]
public int ID { get; set; }
public string Description { get; set; }
public decimal Price { get; set; }
}
これは熱心な読み込みリクエストです。
ShoppingBasket basket = db.Baskets
.Include("ArticelsA")
.Include("ArticelsB")
.Include("ArticelsC")
.First( p => p.ID == id);
// db.Entry(person).Collection("ArticelsC").Load();
そして、これが私の見解の結果です
aArticles A:
Teller 45,87
Schere 48,70
Feuerzeug 20,00
Articles B:
Pizza 123,14
Burger 99,87
Articles C:
Auto 2314,00
Taxi 7987,00
データベースの Auto の価格は 23,14 で、Taxi は 79,87 です。ビューの問題ではありません。デバッガーを使用すると、バスケット オブジェクトでもその問題を確認できます。
インクルードを ArticlesA、ArticlesC、ArticlesB に変更すると、B の値は false になります。
簡単な回避策として、3 番目のコレクションを次の行にリロードします。
db.Entry(person).Collection("ArticelsC").Load();
しかし、このソリューションは、2 回目の db 呼び出し、またはコレクションごとに 1 回の呼び出しを生成しました。これは、将来、またはより複雑なエンティティ構造で必要になります。