2017-05-30 13 views
0

私は.Netコアプロジェクトを実行しており、2つの異なるデータベース(MySQLデータベースとPostGreSQLデータベース)を利用しています。私はそれらを設定していると、彼らは両方とも私の現在のコントローラに実装されている - TripController.cs.Net 2つの異なるデータベースからのコアクエリデータ

TripController.cs

public IActionResult Index() 
{ 
    var viewModels = new List<TripViewModel>(); 
    var Dids = _tripContext.Dids.ToList(); 
    foreach (var Did in Dids) 
    { 
     IQueryAble<Tripmetadata> trips = _tripContext.Tripmetadata.Where(t => t.Did == Did.Did); 
     var tripsCount = trips.Count() 
     //--------------------- I believe error is here --------------------- 
     var alias = _context.Devices.Where(d => (long.Parse(d.Did)) == Did.Did).Select(d => d.Alias).ToString(); 
     // ------------------------------------------------------------------ 
     var viewModel = new TripViewModel 
     { 
      TripCount = tripsCount, 
      didElement = Did, 
      Alias = alias 
     }; 
     viewModels.Add(viewModel) 
    } 

    return View(viewModels); 
} 

_context MySQLのDBであると_tripContextは、PostgreSQLのDBです。

両方のデータベースには、使用する必要があるDidというフィールドがあります。 PostGreSQLデータベースの場合、私はそれを使って与えられたDidの旅行量(tripCount)を取得する必要があります。しかし、MySQLデータベースの場合は、Didを使用してデバイスのaliasを取得する必要があります。

私は、私の見解では、それを表示するとき、私は奇妙な価値を手に入れたのエイリアスを取得するためにTripControllerから上記のコードを使用しようとすると:ここに見られるように

Microsoft.EntityFrameworkCore.Query.Internal.EntityQueryable`1[System.String] 

enter image description here

私は私のビューに渡すTripViewModel呼ばViewModelに使用します。

TripViewModel.csを

public class TripViewModel 
{ 
    public int TripCount {get;set;} 
    public long DidElement {get;set;} 
    public string Alias {get;set;} 
} 

私はそれをどのように私の見解で右Aliasと書くか?

私は必要な結果を得られない多数の方法を試しました。

答えて

0

解決策を見つけることができました。

私の問題は、EFクエリの最後に.Single()を追加していませんでした。

また、この投稿は重複していることが判明しました。しかし、私は問題が何であるか分かりませんでした。this

関連する問題