我遇到了实体框架和急切加载的问题:如果我想加载几个包含小数的集合,只有前两个包含提供正确的数据。第三个包含提供不带逗号分隔符的数字:这是我的模型:
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();
但是这个解决方案生成了第二个数据库调用或每个集合一个调用,我将来需要更多或更复杂的实体结构