【发布时间】:2015-10-06 08:43:19
【问题描述】:
我试图弄清楚如何让我的 DbSet 初始化来自自定义查询。
说明:
我的 DbSet 将是只读的。
假设我的数据库中有 3 个表。我编写了一个 SQL 查询,对 3 个表进行了复杂的选择。现在我想使用实体框架来查询查询的结果。
我认为这可以通过创建这样的东西来实现:
class MyCustomContext : DbContext
{
public MyCustomContext(string connectionString)
: base(connectionString)
{
}
public DbSet<MyQueryResultRow> ResultsRows { get; set; }
}
但我不知道如何对 DbContext 说“嘿,要检索该 DbSet 的行,请使用该 sql 查询!”。
注意:我不能也不想修改数据库(例如我不能创建 sql 视图)。
有什么想法吗?
【问题讨论】:
-
它似乎没有回答我的问题。我真的很想使用实体框架数据集,因为我需要做一些 OrderBy / Take / Skip 等,我希望实体框架在数据库端执行此操作。我不想获取所有数据然后在上面创建 Linq。
-
为什么不能在上下文中添加 3 个
DbSet属性(每个表一个)并将它们与 Linq 连接起来? -
DbSet 不是数据集 - 它允许您查询实体。结果不放在 DbSet 中,它们只是对象。您也不需要它来执行查询。你想让我做什么?您要执行什么类型的查询?
-
@Floc 你怎么知道的?例如,左连接只是一个 1:N 关系。子查询通常只是另一个
.Select().Where()组合(尽管性能可能很糟糕)。 请发布查询。
标签: c# entity-framework dbcontext