データベース内の異なるテーブルからの複数の結合を含むLinqクエリをリポジトリに構築し、これをコントローラーが表示するオブジェクトとして返そうとしているという問題があります。私が得ているエラーは、「指定されたキャストは無効です」です。
問題の部分は、クエリからオブジェクトを渡そうとしたときに発生するようですが、これを解決する方法がよくわかりません。(私はまだWeb開発に比較的慣れておらず、基本を学ぼうとしています)。
以下は私のリポジトリのコードです:
public ListingModel GetListing(int listingId)
{
var query = from listing in listingsTable
where listing.ListingID == listingId
join feature
in featuresTable on listing.ListingID equals feature.ListingID into features
from f in features.DefaultIfEmpty()
join avail
in availabilityTable on listing.ListingID equals avail.ListingID into availability
from a in availability.DefaultIfEmpty()
join image
in imageTable on listing.ListingID equals image.ListingID into images
from i in images.DefaultIfEmpty()
select new ListingModel
{
Listing = listing,
Features = features,
Availability = availability,
Images = images
};
return query.FirstOrDefault();
}
必要に応じて、ListingModelクラスを次に示します。
public class ListingModel
{
public Listing Listing { get; set; }
public IEnumerable<Feature> Features { get; set; }
public IEnumerable<Availability> Availability { get; set; }
public IEnumerable<Image> Images { get; set; }
}
LinqPadでクエリを試してみると、正常に機能し、希望どおりにデータが返されるため、オブジェクトを返そうとするとエラーが発生するようです。私はこれでいくつかのことを試しましたが、毎回同じエラーが発生しているようです。私はそれを引き起こしているものを特定するのに本当に苦労しています。助けてくれてありがとう。