IEnumerable
継承された型をIEnumerable
基本クラスにキャストしようとしています。
以下を試しました:
var test = resultFromDb.Cast<BookedResource>();
return test.ToList();
しかし、エラーが発生します:
これらの型は変換できません。Linq to Entities は変換プリミティブ EDM タイプのみをサポートします。
関連するクラスは次のようになります。
public partial class HistoryBookedResource : BookedResource
{
}
public partial class HistoryBookedResource
{
public int ResourceId { get; set; }
public string DateFrom { get; set; }
public string TimeFrom { get; set; }
public string TimeTo { get; set; }
}
public partial class BookedResource
{
public int ResourceId { get; set; }
public string DateFrom { get; set; }
public string TimeFrom { get; set; }
public string TimeTo { get; set; }
}
[MetadataType(typeof(BookedResourceMetaData))]
public partial class BookedResource
{
}
public class BookedResourceMetaData
{
[Required(ErrorMessage = "Resource id is Required")]
[Range(0, int.MaxValue, ErrorMessage = "Resource id is must be an number")]
public object ResourceId { get; set; }
[Required(ErrorMessage = "Date is Required")]
public object DateFrom { get; set; }
[Required(ErrorMessage = "Time From is Required")]
public object TimeFrom { get; set; }
[Required(ErrorMessage = "Time to is Required")]
public object TimeTo { get; set; }
}
私が解決しようとしている問題は、テーブルからレコードを取得し、 Entity Framework と LINQ を使用しHistoryBookedResource
て結果を得ることです。IEnumerable<BookedResource>
アップデート:
次のキャスト シームを使用すると機能しますが、foreach でループしようとするとデータが失われます。
resultFromDb.ToList() as IEnumerable<BookedResource>;
更新 2:
エンティティ フレームワークで生成されたモデルを使用して、モデル (edmx) がデータベースから作成され、edmx にはデータベース テーブルを表すクラスが含まれます。
データベースには古いBookedResourceの履歴テーブルがあり、ユーザーがこれらを見て、データベースエンティティフレームワークから古いデータを取得するために、テーブルと同じ名前のクラスを使用してdbからデータを受信することがあります。したがって、HistoryBookedResource クラスのテーブル HistoryBookedResource からデータを受け取ります。
エンティティ フレームワークはプロパティを持つ部分クラスを生成するため、それらを仮想化してオーバーライドできるかどうかはわかりません。
どんな提案でも大歓迎です。