嗨,我有一个现有数据库,其中包含一个包含 30 个字段的表,我想将表拆分为多个模型,以便我可以检索/保存我需要的字段,而不是每次都从数据库中检索/保存整个对象。使用 c#。
我想我应该使用 Code-First。有人可以提供示例或教程链接吗?
谢谢,
嗨,我有一个现有数据库,其中包含一个包含 30 个字段的表,我想将表拆分为多个模型,以便我可以检索/保存我需要的字段,而不是每次都从数据库中检索/保存整个对象。使用 c#。
我想我应该使用 Code-First。有人可以提供示例或教程链接吗?
谢谢,
您无需拆分表即可加载字段子集或保留字段子集。这两种操作也适用于映射到单个实体的整个表。
对于选择,您只需使用投影:
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
将多个实体映射到单个表必须遵循非常严格的规则,并且只有在表拆分时所有实体都必须与一对一关系相关(并且首先在代码中每个拆分表有两个以上实体存在一些问题)或使用按层次结构的表继承。我认为您不想在这种情况下使用它们中的任何一个。