2010-08-04 8 views
4

EF 컨텍스트와 테스트를 통해 다음 테스트를 수행하고 싶습니다.EF 컨텍스트에 저장하고 데이터 소스에 저장하지 않음

TestEntity testEntity = new TestEntity() { Name = "Hello World" }; 
context.TestEntities.AddObject(testEntity); 
// missing Code 
Assert.AreEqual(1, context.TestEntities.Count(), "Entity not in context!"); 

나는 SaveChanges를 작동 것을 알고있다()하지만 난 데이터 소스에에게 엔티티를 저장하지 를 않습니다.

답변

4
TestEntity testEntity = new TestEntity() { Name = "Hello World" }; 
context.TestEntities.AddObject(testEntity); 

var entitiesInOSM = context.ObjectStateManager. 
     GetObjectStateEntries(EntityState.Added | EntityState.Deleted | EntityState.Modified | EntityState.Unchanged). 
     Where(ent => ent.Entity is TestEntity). 
     Select(ent => ent.Entity as TestEntity); 

Assert.AreEqual(1, entitiesInOSM.Count(), "Entity not in context!"); 
+0

이 작동합니다. 그러나 좋게 보이지 않는다. 저장하지 않고 컨텍스트에 대해 LINQ 쿼리를 가져 오는 방법이 없습니까? from Test.TestEntities .... – relascope

+1

컨텍스트에 대해 쿼리를 실행할 때마다 기본 공급자가 쿼리됩니다. 네가 원하지 않는 것. – Yakimych

-1

테스트를 통해 달성하려는 목표는 무엇입니까? 이 테스트에서 모두 달성 할 수있는 것은 여러분을위한 무의미한 테스트 인 기본 Entity Framework ContextObject를 Assert하는 것입니다.

ObjectContext가 종속성 인 추가 테스트를 실행하려는 경우 인터페이스로 ObjectContext를 조롱 할 수 있습니다. T4에서 생성 한 ContextObject에서 추출한 자체 커스텀 IObjectContext 인터페이스를 생성합니다.

+0

이것은 실제로 테스트 사례가 아닙니다. 내가 원하는 것은 컨텍스트에 엔터티를 추가하고 데이터베이스에 저장하지 않고 저장하기 전에 추가 된 엔터티에 대한 컨텍스트를 쿼리하는 것입니다 !! – relascope

관련 문제