Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linq 在调用SaveChanges()之前,ObjectSet查询不会返回添加的EntityObject_Linq_.net 4.0_Entity Framework 4 - Fatal编程技术网

Linq 在调用SaveChanges()之前,ObjectSet查询不会返回添加的EntityObject

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

我想我遗漏了一些非常简单的东西

我有一个EF4 ObjectContext,其中包含类型为Thing的ObjectSet,它映射到数据库中名为Things的表中。如果我将某个对象添加到Things对象集中,则在我调用ObjectContext上的SaveChanges()之前,该对象在对象中不可见

因此,在以下测试夹具中,AddToThings_AddsItemsToContext_和SaveChanges通过,但AddToThings_AddsItemsToContext_和SaveChanges失败:

[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());
    }
}
有没有办法做我想做的事?也就是说,将实体添加到对象集中,并使它们在不保存到数据库的情况下可见?

答案如下: