関連データを選択するときにMVC5アプリケーション(Entity Frameworkを使用)に関するヘルプを探していますが、これは正しく動作していると思っていましたが、特定の方法でデータを選択しようとするとエラーが表示されるためです。関連データを読み込んでいるときにアプリケーションでLINQエラーが発生しています
関連するデータを格納する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すべてがHive1のIDにHive_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);
}
を選択するように制御コードを追加し、すべてがコンパイルされ、問題はありません。しかし、私がプロジェクトを実行し、アプリケーションがデータを読み込もうとすると、エラーが発生します。
{"The specified type member 'location' is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported."}
が、私はどのようにこのエラーまたは私が間違ってやったを解決する方法がわからないんだけど、私は上記の:(
財産LOCAにそれを変更しようとしますコンストラクタ(new)を必要とするオブジェクトである可能性があります。 Hiveクラスで、場所を初期化するコンストラクタを作成します。 – jdweng