EF 7 / DotNET核心中的原始查询 - 在EF 7中为原始查询定义poco类和db.set

时间:2016-11-11 17:05:45

标签: c# entity-framework asp.net-core

我正在DotNET Core中创建一个简单的网站,主要是为了学习,因为我想摆脱PHP。

我想运行简单的原始查询来用一些数据填充一个表。我也偶尔会运行一些存储过程。

我找到了这个学习资料并尝试遵循它(今年10月更新):https://msdn.microsoft.com/en-us/library/jj592907(v=vs.113).aspx

收到错误后我意识到最新版本的EF不包含SqlQuery的定义,而你得到的最接近的是FromSQL。

我在github上找到了这个问题的讨论:https://github.com/aspnet/EntityFramework/issues/1862 如果您按照那里的对话,您将看到在2016年第四季度 - 2017年第一季度推出的下一个版本中将添加对原始SQL查询的支持

问题:

我似乎获得了很多关于如何解决这个问题的部分信息,而且我对某些需要做的事情有所了解。我仍然无法理解整个概念。

我有这个简单的数据库:

AutoId  Numbers
1       1
2       2
3       3
4       4
5       5
6       6
7       5
8       4
9       3
10      2
11      1

我试图通过在我的控制器中写这个来访问这些数据:

var graphs = _context.Graph.FromSql("SELECT * FROM dbo.Graph").ToArray();

然后我在ViewBag中传递了它:

ViewBag.GraphData = graphs;

但是当我尝试发射(这是正确的词吗?)数据到视图时,我看到了这一点(我把它放在视图中只是为了看看会发生什么):

System.Collections.Generic.List`1[ASPNET_Core_1_0.Models.Graph]


ASPNET_Core_1_0.Models.Graph 
ASPNET_Core_1_0.Models.Graph 
ASPNET_Core_1_0.Models.Graph 
ASPNET_Core_1_0.Models.Graph 
ASPNET_Core_1_0.Models.Graph 
ASPNET_Core_1_0.Models.Graph 
ASPNET_Core_1_0.Models.Graph 
ASPNET_Core_1_0.Models.Graph 
ASPNET_Core_1_0.Models.Graph 
ASPNET_Core_1_0.Models.Graph 
ASPNET_Core_1_0.Models.Graph

我的查看文件如下所示:

@model IEnumerable<ASPNET_Core_1_0.Models.Graph>

@{
    ViewBag.Title = "Graphs";
}


@{ 
    var data = ViewBag.GraphData;
}
<h2>Graphs</h2>

<div> @ViewBag.GraphData </div>
<br />
<div>
    @foreach (var item in data) { 
        <br />
        @item
    }
</div>

====

以下是GIThub问题页面的示例:

  

E.g。假设Product是实体类型而ProductListEntry只是   这是一种未在模式中映射的任意CLR类型:

var data = db.Set<Product>()
.FromSql("SELECT * FROM Product WHERE 1=1")
.Select(t => new ProductListEntry{Id = t.Id, Name = t.Name})
.ToList(); 
  

但这不是:

var data = db.Set<ProductListEntry>()
.FromSql("SELECT Id, Name FROM Product WHERE 1=1")
.ToList();

是否有人能够向我展示如何运行此查询并将实际结果输入到我的视图中而不是对象名称?我明白这对某些人来说可能是一个简单的问题 - 对于某些人来说我真的很难理解DotNET Core的一些基本概念和像C#这样的强类型语言,因此这样的问题。

研究

Custom Data Access in EF for POCO

Raw SQL Query without DbSet - Entity Framework Core

What is a CLR class?

Context does not contain a definition for ExecuteStoreCommand

Entity Framework 7 FromSql stored procedure return value

实体框架核心1.1计划:

https://blogs.msdn.microsoft.com/dotnet/2016/07/29/entity-framework-core-1-1-plans/

0 个答案:

没有答案