【问题标题】:Entity Framework 4.1 & existing databaseEntity Framework 4.1 和现有数据库
【发布时间】:2012-07-04 16:03:45
【问题描述】:

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

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

谢谢,

【问题讨论】:

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


    【解决方案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
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-13
      • 1970-01-01
      • 1970-01-01
      • 2012-02-03
      • 2011-11-06
      • 1970-01-01
      • 2012-02-29
      • 1970-01-01
      相关资源
      最近更新 更多