我有一个在v4.0集成模式下运行的asp.net Web表单应用程序.
我试图在App_Code文件夹中添加一个apicontroller.
在Global.asax中,我添加了以下代码
RouteTable.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = System.Web.Http.RouteParameter.Optional }
);
Run Code Online (Sandbox Code Playgroud)
当我尝试导航到控制器时http://localhost/api/Value,我收到404错误.
无扩展URL在处理程序部分中配置.我为网站启用了表单和匿名身份验证.
ExtensionLess url配置为'*.'
当我点击控制器的url时,请求由StaticHandler而不是ExtensionlessUrlHandler-Integrated-4.0处理.
我现在不知道为什么系统会抛出错误,如下图所示.

我的解决方案中有3个类项目.1. MVC4项目2.域3.测试
在MVC4项目中,我添加了一个带有连接字符串的web.config文件
<add name="EfDbContext" connectionString="Data Source=.;Initial Catalog=SportsStore;Integrated Security=true;" providerName="System.Data.SqlClient"/>
Run Code Online (Sandbox Code Playgroud)
我在Domain项目中有一个名为EfDbContext的类,它继承了DbContext.
当我在浏览器中查看网站时,我收到服务器未找到错误.
我调试了EfDbContext类,发现Database.Connection.ConnectionString设置为\ SqlExpress,数据库为EfDbContext.
这是为什么?
我有一个包含varchar列的表,我正在使用Entity Framework在WHERE子句中使用此列.
实体框架生成查询,N''因此无法使用列上的索引.有没有办法强制实体框架生成varchar查询而不是nvarchar一个?
我创建了一张桌子
create table #temp(a int, b int, c int)
Run Code Online (Sandbox Code Playgroud)
我在这个表上有2个索引:
当我尝试执行以下查询时:
select b from #temp where c = 3
Run Code Online (Sandbox Code Playgroud)
我看到系统用于索引扫描.这很好,因为非聚集索引没有b作为键值.因此它从列a进行索引扫描.
但是当我尝试执行以下查询时: -
select b from #temp where c= 3 and a = 3
Run Code Online (Sandbox Code Playgroud)
我看到执行计划只有索引搜索.没有扫描.这是为什么?
聚集索引和非聚簇索引都不是b作为列之一?
我希望索引扫描.
请澄清