默认情况下,实体框架查询本地
本文关键字:查询 框架 实体 情况下 默认 | 更新日期: 2024-11-08 09:39:15
我想在实体框架中执行查询,在访问数据库之前进行搜索时使用本地跟踪实体。我已经编写了一个填充存储库/数据库的复杂例程,现在当我使用实体框架时,它将不使用已添加但尚未保存的实体。因此,此代码片段应仅向数据库添加单个类别,而不是添加 n。
using (Db Db = new Db()) {
for (int i = 0; i < 10; i++) {
Category Category = Db.Categories.SingleOrDefault(x => x.Name == "Hello");
if (Category == null) {
Category = Db.Categories.Create();
Category.Name = "Hello";
Db.Categories.Add(Category);
Console.WriteLine("Adding item...");
}
}
}
我将如何做到这一点?我有一个抽象,允许我从 IQueryable 更改提供程序,我试图使用它首先点击本地集合。我没有成功。请帮忙。
这是一种非常简单易读的方法,尽管它可能不是您想要的:
using (Db Db = new Db()) {
var newCategories = new List<Category>();
for (int i = 0; i < 10; i++) {
Category category = newCategories.SingleOrDefault(x => x.Name == "Hello");
if (category == null) {
category = Db.Categories.SingleOrDefault(x => x.Name == "Hello");
if (category == null) {
category = Db.Categories.Create();
category.Name = "Hello";
Db.Categories.Add(category);
newCategories.Add(category);
Console.WriteLine("Adding item...");
}
}
}
}
编写自己的 IQueryable 提供程序是一项非常复杂的任务。
编辑:我发现这篇文章更详细地说明了为什么你试图做的事情不起作用。
以为我不知道您的具体情况是什么,您应该在查询数据存储之前尝试从集合中删除重复项。上述解决方案同时执行此操作。
希望这有帮助。