首页 > 解决方案 > ASP.NET MVC 视图模型 SQL 查询语法

问题描述

我正在尝试将基本模型转换为模型视图和 SQL 查询。那么我的查询或其他文件有什么问题?

// GET: Cars
public ActionResult Index()
{
    List<CarsTrxViewModel> model = db.Database.SqlQuery<CarsTrxViewModel>(SqlCars.CarsTrxByID()).ToList();

    return View(model);
    // return View(db.Cars.ToList());
}

查看型号:

public class CarsTrxViewModel
{
    public int CarID { get; set; }
    public string CarBrand { get; set; }
    public string CarModel { get; set; }

    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy HH:mm:ss}")]
    public DateTime CreateDate { get; set; }
}

询问:

public static class SqlCars
{
    public static string CarsTrxByID()
    {
        return "select " + " * , " +
             "cars.CarID as CarID " +
            ",cars.CarBrand as CarBrand " +
            ",cars.CarModel as CarModel " +
            ",cars.CreateDate as CreateDate " +
            "from (SELECT * from [NagisOfflineDB].[dbo].[cars] )";
    }

    public static string GetCardholderByID()
    {
        return "SELECT TOP 1 * from [NagisOfflineDB].[dbo].[cars]";
    }
}

模型:

public class Cars
{
    [Key]
    public int CarID { get; set; }

    [StringLength(50)]
    [Required]
    public string CarBrand { get; set; }

    [StringLength(250)]
    [Required]
    public string CarModel { get; set; }

    public DateTime CreateDate { get; set; }
}

我不是加入或其他操作我只是在一个表中选择一列并设置别名行所以我的查询有什么问题?

编译器说你的查询错误它的错误 System.Data.SqlClient.SqlException: 'Incorrect syntax near ')'。

完整版的错误

“/”应用程序中的服务器错误。
')' 附近的语法不正确。

说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.Data.SqlClient.SqlException:')' 附近的语法不正确。

源错误:

第 20 行:
第 21 行:
第 22 行:列表模型 = db.Database.SqlQuery(SqlCars.CarsTrxByID()).ToList();

和堆栈跟踪

[SqlException (0x80131904): ')' 附近的语法不正确。]
System.Data.SqlClient.SqlConnection.OnError(SqlException 异常, Boolean breakConnection, Action 1 wrapCloseInAction) +59524921 wrapCloseInAction) +2552942
System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action

System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) +285 System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean & dataReady) + 4169 System.Data.SqlClient.SqlDataReader.TryConsumeMetaData() +58 System.Data.SqlClient.SqlDataReader.get_MetaData() +89 System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption, Boolean shouldCacheForAlwaysEncrypted) +430 System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream,布尔异步,Int32 超时,Task& 任务,布尔异步写入,布尔 inRetry,SqlDataReader ds,布尔 describeParameterEncryptionRequest) +2598 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior,RunBehavior runBehavior,布尔 returnStream,String 方法,TaskCompletionSource1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry) +1483 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) +64 System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) +240 System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior) +41 System.Data.Common.DbCommand.ExecuteReader(CommandBehavior behavior) +12 System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.<Reader>b__c(DbCommand t, DbCommandInterceptionContext1 c) +14 System.Data.Entity.Infrastructure.Interception.InternalDispatcher 1.Dispatch(TTarget target, Func3 操作,TInterceptionContext 拦截上下文,3 executing, Action执行的动作 3) +72 System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.Reader(DbCommand command, DbCommandInterceptionContext interceptionContext) +402 System.Data.Entity.Internal.InterceptableDbCommand.ExecuteDbDataReader(CommandBehavior 行为)+166 System.Data.Common.DbCommand.ExecuteReader(CommandBehavior 行为)+12 System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQueryInternal(String commandText,String entitySetName, ExecutionOptions executionOptions, Object[] 参数)+266 System.Data.Entity.Core.Objects.<>c__DisplayClass691.<ExecuteStoreQueryReliably>b__68() +44 System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction(Func1 func, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction, Boolean releaseConnectionOnSuccess) +288 System.Data.Entity.Core.Objects.<>c__DisplayClass69 1.<ExecuteStoreQueryReliably>b__67() +167 System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute(Func1 次操作) +190 System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQueryReliably(String commandText, String entitySetName, ExecutionOptions executionOptions, Object[] 参数) +462 System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQuery(String commandText, ExecutionOptions executionOptions, Object[] 参数) +60 System.Data.Entity.Internal.<>c__DisplayClass14 1.<ExecuteSqlQuery>b__13() +130 System.Data.Entity.Internal.LazyEnumerator1.MoveNext() +45 System.Collections.Generic.List 1..ctor(IEnumerable1 个集合) +387 System.Linq.Enumerable.ToList(IEnumerable1 source) +58 NgsOfflineDev.Controllers.CarsController.Index() in C:\Dev\NagisDevOffline\NgsOfflineDev\NgsOfflineDev\Controllers\CarsController.cs:22 lambda_method(Closure , ControllerBase , Object[] ) +61 System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters) +14 System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary2个参数)+157 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary 2 parameters) +27 System.Web.Mvc.Async.<>c.<BeginInvokeSynchronousActionMethod>b__9_0(IAsyncResult asyncResult, ActionInvocation innerInvokeState) +22 System.Web.Mvc.Async.WrappedAsyncResult2.CallEndDelegate(IAsyncResult asyncResult) +29 System.Web.Mvc.Async.WrappedAsyncResultBase 1.End() +49 System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult) +32 System.Web.Mvc.Async.<>c__DisplayClass11_0.<InvokeActionMethodFilterAsynchronouslyRecursive>b__0() +58 System.Web.Mvc.Async.<>c__DisplayClass11_2.<InvokeActionMethodFilterAsynchronouslyRecursive>b__2() +228 System.Web.Mvc.Async.<>c__DisplayClass7_0.<BeginInvokeActionMethodWithFilters>b__1(IAsyncResult asyncResult) +10 System.Web.Mvc.Async.WrappedAsyncResult1.CallEndDelegate(IAsyncResult asyncResult) +10 System .Web.Mvc.Async.WrappedAsyncResultBase 1.End() +49 System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult asyncResult) +34 System.Web.Mvc.Async.<>c__DisplayClass3_6.<BeginInvokeAction>b__4() +35 System.Web.Mvc.Async.<>c__DisplayClass3_1.<BeginInvokeAction>b__1(IAsyncResult asyncResult) +100 System.Web.Mvc.Async.WrappedAsyncResult1.CallEndDelegate(IAsyncResult asyncResult) +10 System.Web.Mvc.Async.WrappedAsyncResultBase 1.End() +49 System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) +27 System.Web.Mvc.<>c.<BeginExecuteCore>b__152_1(IAsyncResult asyncResult, ExecuteCoreState innerState) +11 System.Web.Mvc.Async.WrappedAsyncVoid1.CallEndDelegate(IAsyncResult asyncResult) +29 System.Web.Mvc.Async.WrappedAsyncResultBase 1.End() +49 System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +45 System.Web.Mvc.<>c.<BeginExecute>b__151_2(IAsyncResult asyncResult, Controller controller) +13 System.Web.Mvc.Async.WrappedAsyncVoid1.CallEndDelegate(IAsyncResult asyncResult ) +22 System.Web.Mvc.Async.WrappedAsyncResultBase1.End() +49 System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +26 System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult asyncResult) +10 System.Web.Mvc.<>c.<BeginProcessRequest>b__20_1(IAsyncResult asyncResult, ProcessRequestState innerState) +28 System.Web.Mvc.Async.WrappedAsyncVoid1.CallEndDelegate(IAsyncResult asyncResult) +29 System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49 System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +28 System.Web.Mvc.MvcHandler.System .Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult 结果) +9 System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +9874329 System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep 步骤) +48 System.Web.HttpApplication. ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +159

版本信息:

标签: c#sql-serverasp.net-mvcactionviewmodel

解决方案


推荐阅读