私は(あなたがその全体hereでそれを見ることができます)このクラスを持っている...Entity Frameworkのとキャスト<>
internal class BaseRepository<I, C> : IRepository<I>
where I : class, IBaseObject
where C : BaseObject
{
private Context _context;
public IEnumerable<I> FindBy(Expression<Func<I, bool>> predicate)
{
return _context.Set<C>().ToList().Cast<I>().AsQueryable().Where(predicate);
}
// other methods.
}
私はこれを動作することができますどのように私は、私は信じている.ToList()
を呼び出す必要はありません。 EFは.ToList()
と.AsQueryable()
せずにこれを使用して.Set<C>()
のすべてを返すようになり、エラーが発生します。
System.NotSupportedException:タイプをキャストすることができません「Sln.DAL.Sql.Entities.Project」T o「Sln.DAL.Entities.IProject」と入力します。エンティティへのLINQは、EDMプリミティブまたは列挙型のキャストのみをサポートします。
マインドを使用することはでき
制約を追加した場合は?それを削除するとどうなりますか? –
申し訳ありません - 追加されました。 – Brendan
BaseObjectは常にIから派生していますか? – Phil