使用不带EntityObject的Entity Framework修改字段

时间:2011-03-23 15:45:39

标签: entity-framework

我有一张表是图片和其他文件类型的表。我想编辑名称字段。通常我会这样做:

var file = Db.Files.First(f => f.FileID == id);
file.Name = "NewName";
Db.SaveChanges();

但是,在这种情况下,这将无缘无故地从数据库服务器中提取整个varbinary(max)。有没有办法在不获取整个EntityObject的情况下编辑项目?也许我可以使用存根实体或什么?

2 个答案:

答案 0 :(得分:3)

你也可以使用这个简单的技巧:

// 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();

它将为您保存对数据库的查询。

答案 1 :(得分:1)

您可以将实体拆分为两个实体,并将昂贵的数据列移动到第二个实体。查看“Table Splitting”: Mapping multiple entity types to the same table.