使用实体框架修改字段没有EntityObject
问题描述:
我有一个表是图片和其他文件类型的表。我想编辑名称字段。通常我会做到这一点:使用实体框架修改字段没有EntityObject
var file = Db.Files.First(f => f.FileID == id);
file.Name = "NewName";
Db.SaveChanges();
然而,在这种情况下,这将拉动从无缘无故数据库服务器的整个VARBINARY(MAX)。有没有办法编辑一个项目而没有获得整个EntityObject?也许我可以使用存根实体或其他东西?
答
您也可以使用这个简单的一招:
// Define a dummy object
var file = new File { Id = id, Name = "NewName" };
// The dummy object attached as Unchanged entity
context.Files.Attach(file);
// Get change tracking information about the entity
ObjectStateEntry entry = context.ObjectStateManager.GetObjectStateEntry(file);
// Set Name property to modified
entry.SetModifiedProperty("Name");
// Save changes - only Name property will be modified
context.SaveChanges();
它会询问您保存到数据库中。
答
您可以将实体分成两个实体并将昂贵的数据列移动到第二个实体。检查“Table Splitting”: Mapping multiple entity types to the same table.
正是我在找的东西。谢谢 – tster 2011-03-24 13:06:51