实体框架4.1&现有数据库

时间:2012-07-04 16:03:45

标签: c#-4.0 entity-framework-4.1 ef-code-first

您好我有一个包含30个字段的表的现有数据库,我想将表拆分成许多模型,这样我就可以检索/保存我需要的字段,而不是每次都从数据库中检索/保存整个对象。使用c#。

我想我应该使用Code-First。有人可以提供示例或教程链接吗?

感谢,

1 个答案:

答案 0 :(得分:1)

您无需拆分表即可加载字段子集或保留字段子集。这两个操作都可用,整个表也映射到单个实体。

如需选择,您只需使用投影:

var data = from x in context.HugeEntities
           select new { x.Id, x.Name };

您可以在投影中使用匿名类型或任何非映射类。

对于更新,您只需使用:

var data = new HugeEntity { Id = existingId, Name = newName };
context.HugeEntities.Attach(data);
var dataEntry = context.Entry(data);
dataEntry.Property(d => d.Name).IsModified = true; // Only this property will be updated
context.SaveChanges();

或者:

var data = new HugeEntity { Id = existingId };
context.HugeEntities.Attach(data);
data.Name = newName; 
context.SaveChanges(); // Now EF detected change of Name property and updated it

将多个实体映射到单个表必须遵循非常严格的规则,并且只有表拆分才有可能所有实体必须与一对一关系相关(并且每个拆分表中有两个以上实体存在一些问题)代码优先)或每个层次的表继承。在这种情况下,我认为你不想使用它们中的任何一个。