私はサポートしているエンティティフレームワークテーブルの数は、それらのパリティクラスを使用してIHistoricEntity
です。 IHistoricEntity
はActiveTo
Datetime?
です。ここでキャストはどこですか? LINQ to Entitiesは、エンティティデータモデルのプリミティブタイプをキャストすることのみをサポートします
List<ANALYSIS_CODE> filtered = (from rec in ps.GetANALYSIS_CODES() where rec.ActiveTo == null select rec).ToList()
ので、同じように:
private List<T> Filter<T>(IQueryable<T> queryable) where T : IHistoricEntity
{
return (from rec in queryable where rec.ActiveTo == null select rec).ToList();
}
// called like this:
List<ANALYSIS_CODE> filtered = Filter(ps.GetANALYSIS_CODES());
これはToList
にこの例外を与える:
を、私はこの方法には、この作業コードをリファクタリングしようとしています
// Auto generated LINQ to Entities domain service: [EnableClientAccess()] public partial class ProductService : LinqToEntitiesDomainService<ProductDBEntities> { public IQueryable<ANALYSIS_CODES> GetANALYSIS_CODES() { return this.ObjectContext.ANALYSIS_CODES; } ... } // My Partial class to add interface public partial class ANALYSIS_CODES : IHistoricEntity {}
タイプ「ANALYSIS_CODES」をキャストすることができません「IHistoricEntity」と入力します。 LINQ to Entitiesは、Entity Data Modelプリミティブ型のキャストのみをサポートします。
しかし、どこでIHistoricEntity
にキャストするように頼んだのですか?私は大いに言われたT
はIHistoricEntity
をサポートする必要があります。
にLINQの式を変更し、あなたが変数でクエリを保存しようとしたことがあり、およびそれをToListingする前にデバッガの式のプロパティを調べる?それはキャストがどこにあるかを示すはずです。 – wizzardmr42
そこには何も役立つものはありません。結果を拡大しようとすると例外が発生します。 – weston
明示的に.expressionプロパティにアクセスしようとしましたか?デバッガでは常に表示されるとは限りませんが、手動で入力することができます。また、try.ToString()をデバッガで試してみてください。これは手掛かりを与えるかもしれません(LinqからSQLへの作業、まだエンティティで試したとは思わない) – wizzardmr42