私のデータベースには、ある時点でビットマップに変換する必要のあるバイナリデータがあります。私は、リポジトリを使用してそれを行うのが適切かどうかを考えていました。私の消費者(プレゼンテーション層)は、このリポジトリを使用します。例:EFモデルとコードコンシューマの間のリポジトリの使用
// This is a class I created for modeling the item as is.
public class RealItem
{
public string Name { get; set; }
public Bitmap Image { get; set; }
}
public abstract class BaseRepository
{
//using Unity (http://unity.codeplex.com) to inject the dependancy of entity context.
[Dependency]
public Context { get; set; }
}
public calss ItemRepository : BaseRepository
{
public List<Items> Select()
{
IEnumerable<Items> items = from item in Context.Items select item;
List<RealItem> lst = new List<RealItem>();
foreach(itm in items)
{
MemoryStream stream = new MemoryStream(itm.Image);
Bitmap image = (Bitmap)Image.FromStream(stream);
RealItem ritem = new RealItem{ Name=item.Name, Image=image };
lst.Add(ritem);
}
return lst;
}
}
これはリポジトリパターンを使用する正しい方法ですか?私は自分のソースコードを見たときに例えば...私はこのパターンを学んでいると私はオンラインの例をたくさん見てきたリポジトリを使用していることが、:
public IQueryable<object> Select
{
return from q in base.Context.MyItems select q;
}
あなたはほとんどない行動を見ることができるようにされますデータアクセスクエリを隠すことを除いて、彼らのアプローチによってシステムに追加されたので、私はリポジトリが何か他のものであると混乱してしまいました。最後には、それを使うという特別な利点があるはずです。
更新:あなたはデータを送信する前にデータを処理する必要がなければ、リポジトリは必要ありませんが、待ってください! LINQクエリの抽象化はありませんか?そうすれば、クライアントは私たちのために少し安全ではなく、検証が難しいクエリ文を提供しなければならないので、リポジトリはデータクエリの抽象化も提供していますか?これが本当であれば、リポジトリを持つことは、プロジェクト・アーキテクチャーにおいて常に必要不可欠なものです!! この抽象化は、SQLストアドプロシージャを使用することによって提供することができます。両方のオプションが利用可能な場合の選択肢は何ですか?
私の更新を確認してください。ありがとう。 – jim
私の更新された回答を参照してください – MikeSW