1

私はこのクラスを持っています(ここで全体を見ることができます)...

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がすべてを返す原因になると私が信じている電話をかける必要がないように、これをどのように機能させることができますか.Set<C>()

これを使用せず.ToList()に使用すると.AsQueryable()、エラーが発生します。

System.NotSupportedException:タイプ「Sln.DAL.Sql.Entities.Project」をタイプ「Sln.DAL.Entities.IProject」にキャストできません。LINQ to Entitiesは、EDMプリミティブまたは列挙型のキャストのみをサポートします。

4

1 に答える 1

0

制約を追加すると

internal class BaseRepository<I, C> : IRepository<I>
    where I : class, IBaseObject
    where C : BaseObject, I

その後、使用できますか

_context.Set<C>().Where(predicate).AsEnumerable();
于 2012-04-27T19:09:28.003 に答える