나는 왜 내가 기본 엔티티 비교자를 작동하지 않는지에 대해 물어 보았다.EF DbContext 및 Ninject
EF Code First - Linq to Entities Union EqualityComparer
대답은 내 DbContext 따라서 다른 참고 문헌이 개 차이 인스턴스를 사용했다는 사실 때문이었다.
이제 요청을 통해 내 DbContent를 공유하려고합니다. 몇 가지 "복잡한"예제가 있지만 좀 더 간단한 솔루션을 찾으려고한다고 생각했습니다. 나는이 내 두 저장소에서 다음
public class SiteContext : DbContext, IDbContext {
public DbSet<News> News { get; set; }
public DbSet<Category> Categories { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder) {
...
}
}
(NewsRepository 및 CategoryRespository) :
그래서 나는public interface IDbContext {
int SaveChanges();
DbSet<News> News { get; set; }
DbSet<Category> Categories { get; set; }
}
내 DbContext는 다음과 같이 구현되어 단순히 내 엔티티를 요약합니다 IDbContext 인터페이스를 생성 IDbContext를 생성자 매개 변수로 사용
IDbContext _db;
public NewsRepository(IDbContext db) {
_db = db;
}
이제 요청 범위에서 SiteContext에 IDbContext를 바인딩하면 저장소가 동일한 컨텍스트를 공유한다고 가정합니다.
kernel.Bind<IDbContext>().To<SiteContext>().InRequestScope();
그러나 이전 질문에서 내 유니언을 다시 시도 할 때 여전히 중복 엔티티가 수신됩니다! 내가 뭘 잘못하고 있니? 한 요청에서 동일한 문맥을 확실히 사용하고 있는지 어떻게 알 수 있습니까?
컨텍스트의 생성자에 중단 점을 설정할 수 있습니까? 나는 같은 접근 방식을 사용하고 있으며 정확히 당신처럼 요청 당 컨텍스트를 사용하고 있습니다. – Gluip