【发布时间】:2017-08-03 11:34:44
【问题描述】:
我的 sqlserver 数据库中有一个存储过程,它返回多个结果集。
我正在使用 msdn 中的以下链接从实体框架中的 SP 读取多个结果集。
https://msdn.microsoft.com/en-us/library/jj691402(v=vs.113).aspx
要读取数据,我需要在 xyzDBContext 类中为每个结果集设置 DBSet。
模型类:
public class AreaView
{
public String Area { get; set; }
public String Weight { get; set; }
}
DBContext:
public class EnsembleAPIContext : DbContext
{
public DbSet<AreaView> area {get; set;}
// I want to prevent this table from getting created in db
}
这就是我读取结果集并将其映射到上面创建的数据库集的方式。
reader.NextResult();
var contributionArea = ((IObjectContextAdapter)db)
.ObjectContext
.Translate<ContributionArea>(reader, "area ", MergeOption.AppendOnly);
我需要做的是我想为这些结果集创建实体,但我不希望框架在数据库中为这些实体创建表。
注意:这样做的原因是 sp 返回的结果集没有主键,所以假设我们可以使用没有 PK 的实体创建一个有效的表。
这可能吗?
感谢任何帮助。
【问题讨论】:
-
为什么您需要 DbSet?您通常在 DbContext 上创建一个方法来从 SP 获取数据,请参阅stackoverflow.com/questions/20901419/…
-
@CodeCaster SP 不是由 Codefirst 创建的。它已经存在。我只是从代码中调用它。
-
恐怕你没听懂我的评论。它与代码无关。您将
DbSet<T>用于表格,而不是用于 SP。 -
@CodeCaster 你检查了那个 msdn 链接吗,我正在按照它来阅读多个结果集。现在在读取结果集时,我们需要提及要为其映射结果集的实体。现在我想在这里创建一个实体,只是为了这个映射目的,而不是为此在数据库中创建表。我希望这很清楚
-
不,我没有阅读该链接。现在我做到了,但我仍然认为不需要 DbSet。阅读How to Ask 并在您的问题中包含所有相关详细信息。
标签: c# .net sql-server entity-framework