Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.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错误_C#_Linq - Fatal编程技术网

C# 读取相关数据会在我的应用程序中引发LINQ错误

C# 读取相关数据会在我的应用程序中引发LINQ错误,c#,linq,C#,Linq,在选择相关数据时,我正在寻找MVC5应用程序(使用实体框架)的一些帮助,我原以为可以正常工作,但现在我不太确定,因为当我尝试以特定方式选择数据时,会出现错误 我有4个存储相关数据的表。这些是: Hive1 - ID (int, PK) - Name (varchar) Hive2 - ID (int, PK) - Location (varchar) - Hive_ID (int) (relationship to ID of Hive 1) Hive3 - ID (int, pk) - P

在选择相关数据时,我正在寻找MVC5应用程序(使用实体框架)的一些帮助,我原以为可以正常工作,但现在我不太确定,因为当我尝试以特定方式选择数据时,会出现错误

我有4个存储相关数据的表。这些是:

Hive1
- ID (int, PK)
- Name (varchar)

Hive2
- ID (int, PK)
- Location (varchar)
- Hive_ID (int) (relationship to ID of Hive 1)

Hive3
- ID (int, pk)
- Propulsion (carchar)
- Hive_ID (int) (relationship to ID of Hive 1)

Hive4
- ID (int, pk)
- BHP (varchar)
- Hive_ID (int) (relationship to ID of Hive 1)
因此,Hive2、Hive3、Hive4都有一个从Hive_ID到Hive1 ID的关系。因为我正在显示相关数据,所以我创建了一个视图模型并声明了我想要显示的内容

namespace MyProject.ViewModels
{
    public class HiveViewModel
    {

        //Hive 1
        public int id { get; set; }
        public string name { get; set; }

        //Hive 2
        public string location { get; set; }

        //Hive 3
        public string propulsion { get; set; }

        //Hive 4
        public string bhp { get; set; }
    }
}
然后我添加了控制器代码来选择数据

public ActionResult data_read([DataSourceRequest]DataSourceRequest request)
{
        var datacontext = db.Hive1.AsQueryable();

        IQueryable<HiveViewModel> thevessel = from c in datacontext
                     select new HiveViewModel
                     {
                         //Hive 1
                         id = c.id,
                         name = c.name,

                         //Hive 2
                         location = c.Hive2.location,

                         //Hive 3
                         propulsion = c.Hive3.propulsion,

                         //Hive 4
                         bhp = c.Hive4.bhp                                                   
                                           };
        DataSourceResult result = thevessel.ToDataSourceResult(request);

        return Json(result);
    }

我不知道如何解决这个错误,也不知道我做错了什么,我认为从逻辑上来说,上面的内容是可以的,但显然不是:(

尝试提取c.Hive2.location调用,例如

public ActionResult data_read([DataSourceRequest]DataSourceRequest request)
{
    var datacontext = db.Hive1.AsQueryable();
    var loc = c.Hive2.location;
    IQueryable<HiveViewModel> thevessel = from c in datacontext
                 select new HiveViewModel
                 {
                     //Hive 1
                     id = c.id,
                     name = c.name,

                     //Hive 2
                     location = loc,

                     //Hive 3
                     propulsion = c.Hive3.propulsion,

                     //Hive 4
                     bhp = c.Hive4.bhp                                                   
                                       };
    DataSourceResult result = thevessel.ToDataSourceResult(request);

    return Json(result);
}
public ActionResult数据\u读取([DataSourceRequest]DataSourceRequest请求)
{
var datacontext=db.Hive1.AsQueryable();
var loc=c.Hive2.location;
IQueryable theVesser=来自datacontext中的c
选择新的HiveViewModel
{
//蜂巢1
id=c.id,
name=c.name,
//蜂巢2
位置=loc,
//蜂巢3
推进力=c.蜂巢3.推进力,
//蜂巢4
bhp=c.Hive4.bhp
};
DataSourceResult结果=容器到数据源结果(请求);
返回Json(结果);
}

尝试提取c.Hive2.location调用,例如

public ActionResult data_read([DataSourceRequest]DataSourceRequest request)
{
    var datacontext = db.Hive1.AsQueryable();
    var loc = c.Hive2.location;
    IQueryable<HiveViewModel> thevessel = from c in datacontext
                 select new HiveViewModel
                 {
                     //Hive 1
                     id = c.id,
                     name = c.name,

                     //Hive 2
                     location = loc,

                     //Hive 3
                     propulsion = c.Hive3.propulsion,

                     //Hive 4
                     bhp = c.Hive4.bhp                                                   
                                       };
    DataSourceResult result = thevessel.ToDataSourceResult(request);

    return Json(result);
}
public ActionResult数据\u读取([DataSourceRequest]DataSourceRequest请求)
{
var datacontext=db.Hive1.AsQueryable();
var loc=c.Hive2.location;
IQueryable theVesser=来自datacontext中的c
选择新的HiveViewModel
{
//蜂巢1
id=c.id,
name=c.name,
//蜂巢2
位置=loc,
//蜂巢3
推进力=c.蜂巢3.推进力,
//蜂巢4
bhp=c.Hive4.bhp
};
DataSourceResult结果=容器到数据源结果(请求);
返回Json(结果);
}

我不能100%确定此查询如何转换为SQL。我会尝试将其更改为

public ActionResult data_read([DataSourceRequest]DataSourceRequest request){
    var datacontext = db.Hive1.AsQueryable();

    var hives = (from c in datacontext).ToList();

    IQueryable<HiveViewModel> thevessel = hives.ForEach(c =>
                 select new HiveViewModel
                 {
                     //Hive 1
                     id = c.id,
                     name = c.name,

                     //Hive 2
                     location = c.Hive2.location,

                     //Hive 3
                     propulsion = c.Hive3.propulsion,

                     //Hive 4
                     bhp = c.Hive4.bhp                                                   
                                       });
public ActionResult数据\u读取([DataSourceRequest]DataSourceRequest请求){
var datacontext=db.Hive1.AsQueryable();
var hives=(来自datacontext.ToList()中的c);
IQueryable theVesser=hives.ForEach(c=>
选择新的HiveViewModel
{
//蜂巢1
id=c.id,
name=c.name,
//蜂巢2
位置=c.Hive2.location,
//蜂巢3
推进力=c.蜂巢3.推进力,
//蜂巢4
bhp=c.Hive4.bhp
});

我不能100%确定此查询如何转换为SQL。我会尝试将其更改为

public ActionResult data_read([DataSourceRequest]DataSourceRequest request){
    var datacontext = db.Hive1.AsQueryable();

    var hives = (from c in datacontext).ToList();

    IQueryable<HiveViewModel> thevessel = hives.ForEach(c =>
                 select new HiveViewModel
                 {
                     //Hive 1
                     id = c.id,
                     name = c.name,

                     //Hive 2
                     location = c.Hive2.location,

                     //Hive 3
                     propulsion = c.Hive3.propulsion,

                     //Hive 4
                     bhp = c.Hive4.bhp                                                   
                                       });
public ActionResult数据\u读取([DataSourceRequest]DataSourceRequest请求){
var datacontext=db.Hive1.AsQueryable();
var hives=(来自datacontext.ToList()中的c);
IQueryable theVesser=hives.ForEach(c=>
选择新的HiveViewModel
{
//蜂巢1
id=c.id,
name=c.name,
//蜂巢2
位置=c.Hive2.location,
//蜂巢3
推进力=c.蜂巢3.推进力,
//蜂巢4
bhp=c.Hive4.bhp
});

属性位置可能是需要构造函数(新建)的对象。在配置单元类中,创建初始化位置的构造函数。属性位置可能是需要构造函数(新建)的对象。在配置单元类中,创建初始化位置的构造函数。