0

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 回の呼び出しを生成しました。これは、将来、またはより複雑なエンティティ構造で必要になります。

4

0 に答える 0