我无法弄清楚我的实体框架 MVC 设置发生了什么



SpectrumContext是web.config中定义的连接。我不确定为什么这没有加载。

我的字符串变量"结果"抛出以下错误:

类型"System.Web.Routing.RouteCollection+IgnoreRouteInternal"和 类型 'System.Web.Mvc.RouteCollectionExtensions+IgnoreRouteInternal' 具有相同的简单名称"忽略路由内部",因此不能 在同一模型中使用。给定模型中的所有类型都必须具有唯一 简单名称。在代码中使用"NotMappedAttribute"或调用 Ignore 第一个从 型。

首页控制器.cs

using System;
using System.Collections.Generic;
using System.Data.Common;
using System.Data.Entity;
using System.Data.Entity.Core.EntityClient;
using System.Data.SqlClient;
using System.Linq;
using System.Web.Mvc;
using WebApplication1.Controllers;
using WebApplication1.DataAccessLayer;
namespace WebApplication1.Controllers
{
public class HomeController : Controller
{
public ActionResult Index()
{
BaseContext db1 = new BaseContext("SpectrumContext");
string sql = "select description from dbo.workcategory where workcategoryid = 3";
string results = db1.Database.SqlQuery<string>(sql).First();
return View(results);
}
public ActionResult About()
{
ViewBag.Message = "Your application description page.";
return View();
}
public ActionResult Contact()
{
ViewBag.Message = "Your contact page.";
return View();
}
}
}

基本上下文.cs

using System;
using System.Collections.Generic;
using System.Data.Common;
using System.Data.Entity;
using System.Data.Entity.Core.EntityClient;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
`test`using WebApplication1.Controllers;
namespace WebApplication1.DataAccessLayer
{
public class BaseContext : DbContext
{
protected string connectionName;
public DbSet<HomeController> description { get; set; }
/**
* Created the connection to the server using the giving connection string name
* 
* @param connName
*/
public BaseContext(string connName = "SpectrumContext")
: base(connName)
{
connectionName = connName;
}
/**
* Changes the default database
* 
* @param databaseName
*/
public BaseContext setDatabase(string databaseName)
{
var connectionString = System.Configuration.ConfigurationManager.ConnectionStrings[connectionName].ConnectionString;
SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(connectionString);
//change the database before creating the new connection
builder.InitialCatalog = databaseName;
string sqlConnectionString = builder.ConnectionString;
return new BaseContext(sqlConnectionString);
}
}
}

Index.cshtml

@{
ViewBag.Title = "Home Page";
}
<div class="jumbotron">
<h1>ASP.NET</h1>
</div>
<div>
</div>

为了帮助您入门,如果您只想执行简单的 SQL 语句,请暂时放弃 (EF(DbContext,直到您了解 EF 的工作原理及其用途。

在学习时,可以使用原始 ADO 执行简单的 SQL 语句,如下所示:

const string sql = "select description from dbo.workcategory where workcategoryid = 3";
var connectionString = ConfigurationManager.ConnectionStrings["SpectrumContext"].ConnectionString;
using (var cn = new SqlConnection(connectionString))
{
using (var cmd = new SqlCommand(sql, cn))
{
var results = Convert.ToString(cmd.ExecuteScalar());
return View(results);
}
}

相关内容

最新更新