C# Entity Framework 原始 SQL 查询
C# Entity Framework Raw SQL Query
尝试处理一个简单的 Web 应用程序,我在 Visual Studio 2017 年创建了一个项目,当我使用与 tables 对应的模型时,该项目运行良好(我遵循了教程: https://msdn.microsoft.com/en-us/library/jj206878(v=vs.113).aspx ).
我只想 运行 原始 sql 查询,这样我就可以处理结果,操作并写回另一个 table,或者只显示结果
在我的控制器中我有:
public ActionResult RunQuery001()
{
string query = "SELECT @@VERSION";
return View(db.Servers.SqlQuery(query).ToArray());
}
我创建了一个如下所示的视图:
@model IEnumerable<omfgshootmenow.Server>
@{
ViewBag.Title = "RunQuery001";
}
@foreach (var item in Model)
{
@Html.DisplayFor(model => item.ToString());
}
代码构建但当我执行时出现异常:
Message=The data reader is incompatible with the specified (model here) A member of the type, 'id', does not have a corresponding column in the data reader 与同名
我一直认为视图是完全错误的(或者整个事情都是错误的),因为异常引用了模型的键列。
感谢任何帮助。
我很确定这是因为您的数据的形状与 Server
的类型不匹配。
当您查询 db.Servers
时,您必须 return 匹配服务器的内容。
如果您想 return 任何非实体类型,您应该改用 context.Database.SqlQuery
。看这里:https://msdn.microsoft.com/en-us/library/jj592907(v=vs.113).aspx
要获取字符串,应使用以下内容,请参阅部分 编写 SQL 非实体类型的查询 here
var query = db.Database.SqlQuery<string>("SELECT @@VERSION").FirstOrDefault();
ViewBag.SQLDBVersion= query; // viewbag is dynamic
正在观看
@MvcHtmlString.Create(ViewBag.SQLDBVersion)
首先确保您的模型是相同的:我的意思是如果任何字段可以为空,它在您的模型中必须是可以为空的(更新您的模型)。另一个原因,尝试省略 .ToArray(),将结果保存在变量中并检查 ii.Maybe,出于测试原因,尝试使用其他方法获取日期(例如 https://msdn.microsoft.com/en-us/library/fksx3b4f.aspx)
尝试处理一个简单的 Web 应用程序,我在 Visual Studio 2017 年创建了一个项目,当我使用与 tables 对应的模型时,该项目运行良好(我遵循了教程: https://msdn.microsoft.com/en-us/library/jj206878(v=vs.113).aspx ).
我只想 运行 原始 sql 查询,这样我就可以处理结果,操作并写回另一个 table,或者只显示结果
在我的控制器中我有:
public ActionResult RunQuery001()
{
string query = "SELECT @@VERSION";
return View(db.Servers.SqlQuery(query).ToArray());
}
我创建了一个如下所示的视图:
@model IEnumerable<omfgshootmenow.Server>
@{
ViewBag.Title = "RunQuery001";
}
@foreach (var item in Model)
{
@Html.DisplayFor(model => item.ToString());
}
代码构建但当我执行时出现异常:
Message=The data reader is incompatible with the specified (model here) A member of the type, 'id', does not have a corresponding column in the data reader 与同名
我一直认为视图是完全错误的(或者整个事情都是错误的),因为异常引用了模型的键列。
感谢任何帮助。
我很确定这是因为您的数据的形状与 Server
的类型不匹配。
当您查询 db.Servers
时,您必须 return 匹配服务器的内容。
如果您想 return 任何非实体类型,您应该改用 context.Database.SqlQuery
。看这里:https://msdn.microsoft.com/en-us/library/jj592907(v=vs.113).aspx
要获取字符串,应使用以下内容,请参阅部分 编写 SQL 非实体类型的查询 here
var query = db.Database.SqlQuery<string>("SELECT @@VERSION").FirstOrDefault();
ViewBag.SQLDBVersion= query; // viewbag is dynamic
正在观看
@MvcHtmlString.Create(ViewBag.SQLDBVersion)
首先确保您的模型是相同的:我的意思是如果任何字段可以为空,它在您的模型中必须是可以为空的(更新您的模型)。另一个原因,尝试省略 .ToArray(),将结果保存在变量中并检查 ii.Maybe,出于测试原因,尝试使用其他方法获取日期(例如 https://msdn.microsoft.com/en-us/library/fksx3b4f.aspx)