Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么我不能让linq版本的SQL查询在Telerik OpenAccess中工作?_C#_Asp.net Mvc_Linq_Telerik_Telerik Open Access - Fatal编程技术网

C# 为什么我不能让linq版本的SQL查询在Telerik OpenAccess中工作?

C# 为什么我不能让linq版本的SQL查询在Telerik OpenAccess中工作?,c#,asp.net-mvc,linq,telerik,telerik-open-access,C#,Asp.net Mvc,Linq,Telerik,Telerik Open Access,我正在使用一个MVC项目和一个Telerik开放存取数据项目。到目前为止,我在编写linq语句来查询数据时没有遇到任何问题,但我就是无法正确地获取linq语句。有人能帮我把这个SQL代码翻译成linq吗 这是我的SQL语句。它在SQL Management Studio中运行良好,并返回9条记录 SELECT us.ccustno , so.s1_name , so.s1_id FROM DALubeNew.dbo.usersecurity us INNER JOIN DALubeDeac

我正在使用一个MVC项目和一个Telerik开放存取数据项目。到目前为止,我在编写linq语句来查询数据时没有遇到任何问题,但我就是无法正确地获取linq语句。有人能帮我把这个SQL代码翻译成linq吗

这是我的SQL语句。它在SQL Management Studio中运行良好,并返回9条记录

SELECT 
  us.ccustno
, so.s1_name
, so.s1_id
FROM DALubeNew.dbo.usersecurity us
INNER JOIN DALubeDeacom.dbo.dmso1 so
    ON us.cparentno = so.s1_name
WHERE us.ccustno = 'BIZ017'
我用这种方法翻译成linq:

public List<DataModelSample> GetLocationsByCustID(string custID)
{
    List<DataModelSample> locations =
        (
            from us in dbContext.Usersecurities
            join so in deacom.Dmso1
                on us.cparentno equals so.S1_name
            where us.Ccustno == custID
            select new DataModelSample
            {
                customerID = us.Ccustno,
                origLocationName = so.S1_name,
                origLocationID = so.S1_id.ToString()
            }
        ).ToList();

    return locations;

  } // GetLocationsByCustID

    EntitiesModel dbContext = new EntitiesModel();
    EntitiesModel_Deacom deacom = new EntitiesModel_Deacom();
据我所知,这个查询没有什么不寻常的地方。我以前查询过这些表,没有任何问题。我编写linq查询来分别查询两个表Usersecurities和Dmso1,没有问题。但是,此查询为我提供了未设置为对象实例的错误对象引用。谁能告诉我怎么了

如果有办法的话,我也愿意不使用linq。谢谢大家!

以下是堆栈跟踪(如果有帮助):

> [NullReferenceException: Object reference not set to an instance of an object.]
   Telerik.OpenAccess.Query.ExpressionCompiler.PerformDatabaseQueryImpl(Type resultType, Int32 elementAt, Object[] groupResolutionParamValues, Boolean single, Boolean checkOid) +3148
   Telerik.OpenAccess.Query.ExpressionCompiler.PerformDatabaseQuery(Type type, Int32 elementAt, Object[] groupResolutionParamValues, Boolean single, Boolean checkOid) +97
[InvalidOperationException: An exception occurred during the execution of 'Extent<DALubeBarcodeData.Usersecurity>().Join(Extent<DALube_DeacomModel.Dmso1>(), us => us.Ccustno, so => so.S1_name, (us, so) => new <>f__AnonymousType2d`2(us = us, so = so)).Where(<>h__TransparentIdentifier56 => (<>h__TransparentIdentifier56.us.Ccustno == value(DALubeBarcode.App_Code.DataAccess+<>c__DisplayClass57).custID)).Select(<>h__TransparentIdentifier56 => new DataModelSample() {customerID = <>h__TransparentIdentifier56.us.Ccustno, origLocationName = <>h__TransparentIdentifier56.so.S1_name, origLocationID = <>h__TransparentIdentifier56.so.S1_id.ToString()})'. Failure: Object reference not set to an instance of an object.
See InnerException for more details.
Complete Expression:
.Call System.Linq.Queryable.Select(
    .Call System.Linq.Queryable.Where(
        .Call System.Linq.Queryable.Join(
.Constant<Telerik.OpenAccess.Query.ExtentQueryImpl`1[DALubeBarcodeData.Usersecurity]>(Extent<DALubeBarcodeData.Usersecurity>()),
.Constant<Telerik.OpenAccess.Query.ExtentQueryImpl`1[DALube_DeacomModel.Dmso1]>(Extent<DALube_DeacomModel.Dmso1>()),
            '(.Lambda #Lambda1<System.Func`2[DALubeBarcodeData.Usersecurity,System.String]>),
            '(.Lambda #Lambda2<System.Func`2[DALube_DeacomModel.Dmso1,System.String]>),
            '(.Lambda #Lambda3<System.Func`3[DALubeBarcodeData.Usersecurity,DALube_DeacomModel.Dmso1,<>f__AnonymousType2d`2[DALubeBarcodeData.Usersecurity,DALube_DeacomModel.Dmso1]]>))
        ,
        '(.Lambda #Lambda4<System.Func`2[<>f__AnonymousType2d`2[DALubeBarcodeData.Usersecurity,DALube_DeacomModel.Dmso1],System.Boolean]>))
    ,
    '(.Lambda #Lambda5<System.Func`2[<>f__AnonymousType2d`2[DALubeBarcodeData.Usersecurity,DALube_DeacomModel.Dmso1],DALubeBarcodeDataModel.Models.DataModelSample]>))
.Lambda #Lambda1<System.Func`2[DALubeBarcodeData.Usersecurity,System.String]>(DALubeBarcodeData.Usersecurity $us) {
    $us.Ccustno
}
.Lambda #Lambda2<System.Func`2[DALube_DeacomModel.Dmso1,System.String]>(DALube_DeacomModel.Dmso1 $so) {
    $so.S1_name
}
.Lambda #Lambda3<System.Func`3[DALubeBarcodeData.Usersecurity,DALube_DeacomModel.Dmso1,<>f__AnonymousType2d`2[DALubeBarcodeData.Usersecurity,DALube_DeacomModel.Dmso1]]>(
    DALubeBarcodeData.Usersecurity $us,
    DALube_DeacomModel.Dmso1 $so) {
    .New <>f__AnonymousType2d`2[DALubeBarcodeData.Usersecurity,DALube_DeacomModel.Dmso1](
        $us,
        $so)
}
.Lambda #Lambda4<System.Func`2[<>f__AnonymousType2d`2[DALubeBarcodeData.Usersecurity,DALube_DeacomModel.Dmso1],System.Boolean]>(<>f__AnonymousType2d`2[DALubeBarcodeData.Usersecurity,DALube_DeacomModel.Dmso1] $<>h__TransparentIdentifier56)
{
    ($<>h__TransparentIdentifier56.us).Ccustno == .Constant<DALubeBarcode.App_Code.DataAccess+<>c__DisplayClass57>(DALubeBarcode.App_Code.DataAccess+<>c__DisplayClass57).custID
}
.Lambda #Lambda5<System.Func`2[<>f__AnonymousType2d`2[DALubeBarcodeData.Usersecurity,DALube_DeacomModel.Dmso1],DALubeBarcodeDataModel.Models.DataModelSample]>(<>f__AnonymousType2d`2[DALubeBarcodeData.Usersecurity,DALube_DeacomModel.Dmso1] $<>h__TransparentIdentifier56)
{
    .New DALubeBarcodeDataModel.Models.DataModelSample(){
        customerID = ($<>h__TransparentIdentifier56.us).Ccustno,
        origLocationName = ($<>h__TransparentIdentifier56.so).S1_name,
        origLocationID = .Call (($<>h__TransparentIdentifier56.so).S1_id).ToString()
    }
}
]
   Telerik.OpenAccess.Query.ExpressionCompiler.PerformDatabaseQuery(Type type, Int32 elementAt, Object[] groupResolutionParamValues, Boolean single, Boolean checkOid) +553
   Telerik.OpenAccess.Query.ExpressionExecution.PerformDatabaseQueryMulti(Expression expr, ExecutionSettings settings, Object[] grpVals, Boolean checkOid, QueryOptions options) +185
   Telerik.OpenAccess.Query.Piece`1.ExecuteMultiple() +416
 Telerik.OpenAccess.Query.Piece`1.System.Collections.Generic.IEnumerable<T>.GetEnumerator() +36
   System.Collections.Generic.List`1..ctor(IEnumerable`1 collection) +369
   System.Linq.Enumerable.ToList(IEnumerable`1 source) +58
   DALubeBarcode.App_Code.DataAccess.GetLocationsByCustID(String custID) in c:\inetpub\wwwroot\DA_Lube_CLS\DALubeBarcode\App_Code\DataAccess.cs:687
   DALubeBarcode.Controllers.HomeController.CustomerDashboard() in c:\inetpub\wwwroot\DA_Lube_CLS\DALubeBarcode\Controllers\HomeController.cs:935
   lambda_method(Closure , ControllerBase , Object[] ) +101
   System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters) +14
   System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) +211
   System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +27
   System.Web.Mvc.Async.<>c__DisplayClass42.<BeginInvokeSynchronousActionMethod>b__41() +28
   System.Web.Mvc.Async.<>c__DisplayClass8`1.<BeginSynchronous>b__7(IAsyncResult _) +10
   System.Web.Mvc.Async.WrappedAsyncResult`1.End() +57
 System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult) +48
   System.Web.Mvc.Async.<>c__DisplayClass39.<BeginInvokeActionMethodWithFilters>b__33() +57
   System.Web.Mvc.Async.<>c__DisplayClass4f.<InvokeActionMethodFilterAsynchronously>b__49() +223
   System.Web.Mvc.Async.<>c__DisplayClass37.<BeginInvokeActionMethodWithFilters>b__36(IAsyncResult asyncResult) +10
   System.Web.Mvc.Async.WrappedAsyncResult`1.End() +57
 System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult asyncResult) +48
   System.Web.Mvc.Async.<>c__DisplayClass2a.<BeginInvokeAction>b__20() +24
   System.Web.Mvc.Async.<>c__DisplayClass25.<BeginInvokeAction>b__22(IAsyncResult asyncResult) +102
   System.Web.Mvc.Async.WrappedAsyncResult`1.End() +57
  System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) +43
   System.Web.Mvc.<>c__DisplayClass1d.<BeginExecuteCore>b__18(IAsyncResult asyncResult) +14
   System.Web.Mvc.Async.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) +23
   System.Web.Mvc.Async.WrappedAsyncResult`1.End() +62
   System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +57
   System.Web.Mvc.Async.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) +23
   System.Web.Mvc.Async.WrappedAsyncResult`1.End() +62
   System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +47
 System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult asyncResult) +10
   System.Web.Mvc.<>c__DisplayClass8.<BeginProcessRequest>b__3(IAsyncResult asyncResult) +25
   System.Web.Mvc.Async.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) +23
   System.Web.Mvc.Async.WrappedAsyncResult`1.End() +62
   System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +47
 System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) +9   System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +9658236
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +155

实体框架不知道如何在C中创建DataModelSample对象。一种方法是只执行select new而不是select new DataModelSample。然后从您创建的异常类型创建DataModelSample对象。感谢您的回复。首先,这是Telerik的开放访问数据包,而不是实体框架。第二,我尝试只返回一个字段,比如Ccustno,而不是一个新的DataModelSample,结果得到了相同的错误。还有其他建议吗?请尝试以下操作:将select new DataModelSample更改为select new。在ToList调用之后,执行以下操作:var locationsaclass=locations.Selectx=>newdatamodelsamplex.Ccustno,x.so.S1_name,so.S1_id.ToList;然后返回LocationsClass。如果这不起作用-它在哪一行出错?