데이터베이스를 조회하기 전에 검색 할 때 로컬 추적 엔터티를 사용하는 쿼리를 Entity Framework에서 실행하고 싶습니다. 필자는 저장소/데이터베이스를 채우는 복잡한 루틴을 작성했습니다. 이제 Entity Framework를 사용할 때 이미 추가되었지만 아직 저장되지 않은 엔터티는 사용하지 않습니다. 따라서이 코드 스 니펫은 n을 추가하는 대신 데이터베이스에 하나의 범주 만 추가해야합니다.Entity Framework 기본적으로 로컬 쿼리
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 공급자가 매우 복잡 작업입니다 쓰기 : 그것은 당신이 찾고 무엇을하지 않을 수 있지만
호기심입니다. 아직 저장되지 않은 엔티티를 어떻게 쿼리 할 계획입니까? 데이터베이스 생성 ID는 아직 생성되지 않았기 때문에 0이됩니다. 따라서 정체성은 없습니다. 틀림없이 다른 것들을 쿼리 할 수는 있지만 hackish와 poor practice로만 보인다. 왜 그냥 항목의 자신의 컬렉션을 유지하고 그것에 대해 개체에 linq를 사용하지? –