C# 读取相关数据会在我的应用程序中引发LINQ错误
在选择相关数据时,我正在寻找MVC5应用程序(使用实体框架)的一些帮助,我原以为可以正常工作,但现在我不太确定,因为当我尝试以特定方式选择数据时,会出现错误 我有4个存储相关数据的表。这些是: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
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
});
属性位置可能是需要构造函数(新建)的对象。在配置单元类中,创建初始化位置的构造函数。属性位置可能是需要构造函数(新建)的对象。在配置单元类中,创建初始化位置的构造函数。