0

我遇到了实体框架和急切加载的问题:如果我想加载几个包含小数的集合,只有前两个包含提供正确的数据。第三个包含提供不带逗号分隔符的数字:这是我的模型:

 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 的值是错误的。

作为一个快速的解决方法,我重新加载了行评论中的第三个集合:

db.Entry(person).Collection("ArticelsC").Load();

但是这个解决方案生成了第二个数据库调用或每个集合一个调用,我将来需要更多或更复杂的实体结构

4

0 回答 0