Linq 在调用SaveChanges()之前,ObjectSet查询不会返回添加的EntityObject
我想我遗漏了一些非常简单的东西 我有一个EF4 ObjectContext,其中包含类型为Thing的ObjectSet,它映射到数据库中名为Things的表中。如果我将某个对象添加到Things对象集中,则在我调用ObjectContext上的SaveChanges()之前,该对象在对象中不可见 因此,在以下测试夹具中,AddToThings_AddsItemsToContext_和SaveChanges通过,但AddToThings_AddsItemsToContext_和SaveChanges失败:Linq 在调用SaveChanges()之前,ObjectSet查询不会返回添加的EntityObject,linq,.net-4.0,entity-framework-4,Linq,.net 4.0,Entity Framework 4,我想我遗漏了一些非常简单的东西 我有一个EF4 ObjectContext,其中包含类型为Thing的ObjectSet,它映射到数据库中名为Things的表中。如果我将某个对象添加到Things对象集中,则在我调用ObjectContext上的SaveChanges()之前,该对象在对象中不可见 因此,在以下测试夹具中,AddToThings_AddsItemsToContext_和SaveChanges通过,但AddToThings_AddsItemsToContext_和SaveChang
[TestFixture]
public class Ef4Tests
{
[SetUp]
public void SetUp()
{
var ef4PocEntities = new Ef4PocEntities();
ef4PocEntities.DeleteDatabase();
ef4PocEntities.CreateDatabase();
}
// this test passes
[Test]
public void AddToThings_AddsItemsToContext_WithSaveChanges()
{
var ef4PocEntities = new Ef4PocEntities();
Assert.AreEqual(0, ef4PocEntities.Things.Count());
ef4PocEntities.AddToThings(new Thing {Name = "Bob"});
ef4PocEntities.SaveChanges();
Assert.AreEqual(1, ef4PocEntities.Things.Count());
}
// this test fails
[Test]
public void AddToThings_AddsItemsToContext_WithoutSaveChanges()
{
var ef4PocEntities = new Ef4PocEntities();
Assert.AreEqual(0, ef4PocEntities.Things.Count());
ef4PocEntities.AddToThings(new Thing {Name = "Bob"});
Assert.AreEqual(1, ef4PocEntities.Things.Count());
}
}
有没有办法做我想做的事?也就是说,将实体添加到对象集中,并使它们在不保存到数据库的情况下可见?答案如下: