私はEntity FrameworkのDataContext.GetTable<TEntity>
と同等のものを探しています。 私はObjectContext.CreateQuery<T>
メソッドを見つけましたが、動作するにはクエリ文字列が必要なので、DataContext.GetTable<TEntity>
とは異なります。Entity Frameworkには、Linq2Sql(ObjectContext.CreateQuery <T>?)のDataContext.GetTable <TEntity>と同等のものがあります
クエリ文字列を指定せずにエンティティタイプを使用してテーブルのIQueryableオブジェクトを取得する方法はありますか?
*EDIT: Added code snippet*
これは、linq2sqlで動作する実装済みのRepositoryクラスのスニペットです。私はObjectContext.[TableName]
を使用することはできません。なぜならそれはもはや一般的ではないからです。
public class BaseRepository<TClass> : IDisposable
where TClass : class
{
protected BaseRepository(DataContext database)
{
_database = database;
}
...
public IQueryable<TClass> GetAllEntities()
{
IQueryable<TClass> entities = _database.GetTable<TClass>();
return entities;
}
public IQueryable<TClass> GetEntities(Expression<Func<TClass, bool>> condition)
{
IQueryable<TClass> table = _database.GetTable<TClass>();
return table.Where(condition);
}
*EDIT: Added my solution (so far..)*
これは私が使用しているものです:
public IQueryable<TClass> GetEntities(Expression<Func<TClass, bool>> condition)
{
IQueryable<TClass> table = _database.CreateQuery<TClass>(typeof(TClass).Name);
return table.Where(condition);
}
これがある限り、クラス名はテーブル名と同じであるとして動作します。これは、私が同じテーブルに対して異なるオブジェクトを使用し始めるとき、私にとっては問題になります。
私は
マルコ、事前のおかげで、私は明確にしてきた願っています:)
マルコB:しかし、あなたはそれを古い大学試してみることができますか?私は同じ問題を抱えていて、 "[EntitySet]"をパラメータとしてCreateQueryに渡すことさえできません。 –
私はこの回答を最初に見つけました。その後、[この回答](http://stackoverflow.com/questions/7263083/gettable-equivalent-for-objectcontext)。 Linq2SQLの 'GetTable'に似た簡単な方法があります。 –