我使用Entity Framework v4
(VS2010 Beta 2附带)+ POCO
。我可以将db中的数据完美地加载到poco中。
现在,我有一个poco实例,我不知道如何使用EF4将其保存到数据库中。有人可以帮忙吗?我猜是因为EF4不知道POCO已“改变”了吗?无论如何,这是我正在尝试的代码,它不起作用。 (它会插入到数据库中,但不会使用标识值更新POCO。)
(基于好的olewind Northwind数据库...)
public void Save(Category category)
{
// Error handling ommited...
bool isInsert = category.CategoryId <= 0;
// Note: Category is a POCO, not an entity object.
Category newCategory = isInsert
? new Category()
: ((from l in Context.Categories
.WithCategoryId(category.CategoryId)
select l).SingleOrDefault() ?? new Category());
// Left 2 Right.
newCategory.Name = category.Name;
// continue setting the properties.
// Context is a private property, representing the EF context.
Context.LogEntries.AddObject(newLogEntry);
Context.SaveChanges();
}
此代码基于我对Linq-To-Sql所做的工作(效果很好!) 一般逻辑流程是: -
那么,我可以用EF4重复这个概念吗?
欢呼:)答案 0 :(得分:1)
你确定状态已经改变吗?
您可能想要查看Context.DetectChanges()
http://msdn.microsoft.com/en-us/library/dd456854(VS.100).aspx
答案 1 :(得分:1)
在EF中,您需要将Attach
用于现有(更新)对象,而不是AddObject
用于新(插入)对象。除此之外,它应该工作。