【问题标题】:EF6 Add an ObjectSet based on an existing ObjectSetEF6 基于现有 ObjectSet 添加 ObjectSet
【发布时间】:2020-01-15 09:29:25
【问题描述】:

我有一个包含大量 ObjectSet 的 EF6 ObjectContext。

特别是一个 EntityObject 有一百多个属性,包括一些大文本字段。

我有几种表格可以使用,它们可以处理不同的数据。

不必加载整个对象定义,有没有一种方法可以定义一个包含主键、时间戳和六个文本字段的“新”EntityObject,以便仅从数据库中提取这些字段?

我问这个是因为我已经为此构建了一个数据绑定、验证和更新模式,我宁愿不必构建第二个来配合它。

【问题讨论】:

  • 使用视图模型。 Automapper 是做这类事情的绝佳伴侣。
  • 仍然,他需要先加载实体..
  • 看“分表”。

标签: entity-framework-6 objectcontext objectset


【解决方案1】:

我不确定这是否是您需要的,希望对您有所帮助

1- 使用要存储的属性定义一个新类

2- 编写你的 sql/linq 查询以从你的数据库中提取你想要的字段..

假设你的表有超过 100 个属性是USERS 表,现在定义另一个类

class TEMP_USERS{
    int U_ROWID {get;set;}
    string U_NAME {get;set;}
}

您的查询:

var query = "SELECT U_ROWID, U_NAME FROM USERS"

然后将其存储在定义的类中,如下所示:

var db = new yourDbContext();
var data = db.Database.SqlQuery<TEMP_USERS>(query).ToList();

注意:选择的查询 typesnames 应该与定义的类匹配,这样才能正常工作。

完成此操作后,相应地设置数据绑定,但您需要手动处理数据验证和其他内容

【讨论】:

  • 谢谢阿西姆。但是,我有 ObjectContext (EF6),它没有“数据库”属性。
  • 为什么不使用 DbContext?另一种方法是你可以去老学校,运行查询,获取结果并匹配并将它们存储在 TEMP_USERS 类中。或者如果你想要一些通用的东西(这个有点讨厌)你会得到结果和结果属性sql查询,并在运行时创建动态类
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-19
  • 2012-08-27
  • 2014-06-10
  • 1970-01-01
  • 2013-04-09
  • 1970-01-01
相关资源
最近更新 更多