J'ai des données binaires dans ma base de données que je vais devoir convertir en bitmap à un moment donné. Je pensais s'il était approprié ou non d'utiliser un référentiel et de le faire ici. Mon client, qui est une couche de présentation, utilisera ce référentiel. Par exemple:Utilisation du référentiel entre le modèle EF et le consommateur de code
// 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;
}
}
Est-ce une façon correcte d'utiliser le modèle de référentiel? J'apprends ce modèle et je l'ai vu beaucoup d'exemples en ligne qui utilisent un référentiel, mais quand je regardais leur code source ... par exemple:
public IQueryable<object> Select
{
return from q in base.Context.MyItems select q;
}
comme vous pouvez le voir presque pas de comportement est ajouté au système par leur approche, sauf pour cacher la requête d'accès aux données, donc j'ai été confus que peut-être référentiel est quelque chose d'autre et j'ai tout faux. À la fin, il devrait y avoir des avantages supplémentaires de les utiliser correctement?
Mise à jour: comme il s'est avéré que vous n'avez pas besoin de dépôts s'il n'y a plus rien à faire sur les données avant de les envoyer, mais attendez! pas d'abstraction sur la requête LINQ? De cette façon, le client doit fournir pour nous les instructions de requête qui peuvent être un peu dangereuses et difficiles à valider, alors peut-être que le référentiel fournit également une abstraction sur les requêtes de données? si cela est vrai, avoir un référentiel est toujours un besoin essentiel dans l'architecture du projet !! cependant cette abstraction peut être fournie en utilisant des procédures stockées SQL. Quel est le choix si les deux options sont disponibles?
s'il vous plaît vérifier ma mise à jour. Merci. – jim
voir ma réponse mise à jour – MikeSW