gpt4 book ai didi

entity-framework - EF4:ObjectSet.AddObject()不起作用

转载 作者:行者123 更新时间:2023-12-04 07:27:13 25 4
gpt4 key购买 nike

我正在使用Entity Framework 4建立存储库,但无法使ObjectSet.AddObject()方法正常工作。这是我正在使用的代码-为简单起见,我将其从存储库中复制到了单元测试方法中:

/* m_FilePath value is passed in by test initializer. */

// Configure a SQL CE connection string
var sqlCompactConnectionString = string.Format("Data Source={0}", m_FilePath);

// Create an Entity Connection String Builder
var builder = new EntityConnectionStringBuilder();
builder.Metadata = string.Format("res://*/{0}.csdl|res://*/{0}.ssdl|res://*/{0}.msl", "Model.Notes");
builder.Provider = "System.Data.SqlServerCe.4.0";
builder.ProviderConnectionString = sqlCompactConnectionString;
var edmConnectionString = builder.ToString();

// Create object context and object set
var context = new NotesContainer(edmConnectionString);
var objectSet = context.CreateObjectSet<Note>();

// Add a note
var entity = new Note();
objectSet.AddObject(entity);

// Build assertion
var notes = objectSet.AsEnumerable();
var count = notes.Count();
Assert.AreEqual(1, count);


返回的计数为零-对象集为​​空,因此断言失败。当我单步执行代码时,将创建对象上下文和对象集,但是对对象集的枚举不会返回任何结果。

我的代码有什么错误?谢谢你的帮助。

最佳答案

notes.Count()是针对您的数据文件(我认为是空的)执行的。在调用context.SaveChanges()之前,不会添加新对象。

考虑:

objectSet.AddObject(new Note()); // new object present in memory
var notes = objectSet.AsEnumerable();
var count = notes.Count(); // query against DB file;
// what's in memory at this point is irrelevant


添加新的便笺并断言将添加后,添加 context.SaveChanges()。但是,当然,这会带来全新的问题,即每次测试运行时数据库状态都保持相同。

关于entity-framework - EF4:ObjectSet.AddObject()不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5760743/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com