エンティティ全体を返すのではなく、必須の列のみを選択する汎用関数を作成します。たとえば、私は に以下のプロパティを持つCountryクラスを持っています。ジェネリックリポジトリ関数内の特定の列を選択する
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int CountryId { get; set; }
[Required]
public string Name { get; set; }
public int CreatedBy {get;set;}
public DateTime CreatedDate {get;set;}
私はすべてのエンティティに共通の呼吸クラスを持っています。
public class Repository<T> : IRepository<T> where T : class
{
DbContext db;
DbSet<T> currentEntity;
public Repository(DbContext db)
{
this.db = db;
currentEntity = db.Set<T>();
}
public void Add(T TEntity)
{
currentEntity.Add(TEntity);
}
public virtual List<T> GetAll()
{
return currentEntity.ToList<T>();
}
}
GetAll
の方法としては、すべての列を返しているが、私は唯一のName
とCountryId
を選択します。必要なデータのみを返す汎用関数を作成するにはどうすればよいですか?
C#では、匿名型や動的型をリポジトリから返さなければならないことになります。私はあなたがそれを望むとは思わない、そう? 'List'の代わりに 'IQueryable 'を返す方が良いかもしれないので、消費者は投影を効率的に適用することができます。 –
はい私のリポジトリから動的な型を返したいと思います。私は、アクション<>のような汎用代理人を使用してLinqのSelectメソッドに渡して、国のエンティティの2つのプロパティだけを含む匿名型オブジェクトを作成できますか? –