C# C实体框架原始SQL查询
为了解决一个简单的web应用程序,我在Visual Studio 2017中创建了一个项目,当我使用与我在以下教程中使用的表对应的模型时,该项目运行良好: 我只想运行一个原始sql查询,这样我就可以处理结果,操作并写回另一个表,或者只显示结果 在我的控制器中,我有:C# C实体框架原始SQL查询,c#,.net,asp.net-mvc,entity-framework-5,C#,.net,Asp.net Mvc,Entity Framework 5,为了解决一个简单的web应用程序,我在Visual Studio 2017中创建了一个项目,当我使用与我在以下教程中使用的表对应的模型时,该项目运行良好: 我只想运行一个原始sql查询,这样我就可以处理结果,操作并写回另一个表,或者只显示结果 在我的控制器中,我有: public ActionResult RunQuery001() { string query = "SELECT @@VERSION"; return View(db.Server
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=数据读取器与指定的模型不兼容。此处,“id”类型的成员在数据读取器中没有同名的对应列
我一直认为这个视图是完全错误的,或者是因为异常引用了模型的关键列
非常感谢您的帮助。我确信这是因为您的数据形状与服务器类型不匹配 查询db.Servers时,必须返回与服务器匹配的内容
如果要返回任何非实体类型,应改用context.Database.SqlQuery。请参见此处:我很确定这是因为数据的形状与服务器的类型不匹配 查询db.Servers时,必须返回与服务器匹配的内容
如果要返回任何非实体类型,应改用context.Database.SqlQuery。请参见此处:要获取字符串,应使用以下命令,请参阅编写非实体类型的SQL查询一节
要获取字符串,应使用以下命令,请参阅编写非实体类型的SQL查询一节
首先,确保您的模型是相同的:我的意思是,如果任何字段可以为null,那么它必须在您的模型中为null更新您的模型。另一个原因是,尝试ommit.ToArray,将结果保存在变量中并检查ii。可能出于测试原因,尝试使用其他方法获取日期。首先,确保您的模型是相同的:我的意思是,如果任何字段可以为空,则必须在模型中为空更新您的模型。另一个原因是,尝试ommit.ToArray,将结果保存在变量中并检查ii。可能出于测试原因,尝试使用其他方法获取日期您可以尝试选择@VERSION作为mysqlver吗?@AnilKumar相同错误。我之前在阅读其他文章时也试过,但没有骰子。如果你的问题都是关于EF的,为什么要和mvc混为一谈呢?考虑使用控制台应用程序代码?@耒阳。我正在尝试使用MVCTCH学习如何创建Web应用程序。您的问题与MVC有什么关系吗?为什么不在标题中说mvc呢?你能试着选择@VERSION作为mysqlver吗?@AnilKumar同样的错误。我之前在阅读其他文章时也试过,但没有骰子。如果你的问题都是关于EF的,为什么要和mvc混为一谈呢?考虑使用控制台应用程序代码?@耒阳。我正在尝试使用MVCTCH学习如何创建Web应用程序。您的问题与MVC有什么关系吗?为什么不在标题中说mvc呢?谢谢,在那之后,它是如何在视图中显示的?有很多方法可以引用,我在答案中添加了一种。谢谢,在那之后,它是如何在视图中显示的?有很多方法可以引用,我在答案中添加了一种。
var query = db.Database.SqlQuery<string>("SELECT @@VERSION").FirstOrDefault();
ViewBag.SQLDBVersion= query; // viewbag is dynamic
@MvcHtmlString.Create(ViewBag.SQLDBVersion)