Ich versuche den Internet-Shop mit MVC3 aufzubauen. Ich bin mit EF und ich habe eine Schnittstelle mit meiner Einheit Kontext zu arbeiten:Lambda Ausdrücke in MVC 3
public interface IBaseRepository<T> where T : class, IBase, new()
{
IQueryable<T> Get();
}
und eine abstrakte Klasse mit dieser Schnittstelle zu arbeiten:
public abstract class BaseRepository<T> :
IBaseRepository<T> where T : class, IBase, new()
{
protected abstract ObjectSet<T> EntitySet { get; }
public virtual IQueryable<T> Get()
{
return from obj in EntitySet select obj;
}
}
So kann ich mit dieser Lösung mit verschiedenem arbeiten Tabellen in meiner Datenbank (SQL). Ich kann noch keine Bilder posten. Also werde ich versuchen, meine Datenbank zu beschreiben:
[Product] - [CategoryProduct (ProductID, CategoryID)] - [Kategorie (Shortname)]
- Tabelle Produkt
- Tabelle Kategorie mit Feldshort
- Tabelle CategoryProduct mit Feldern ProductID, CategoryID zur Herstellung von Viele-zu-viele-Links.
(Wir sind immer näher an das Problem ....)
Ich habe eine Methode, die „Shortname“ aus der Tabelle „Kategorie“ („Repository“ nehmen die DbContext nur eine für Tabelle - „Kategorie“) Und ich brauche IEnumerable <> die Produkte in meiner Ansicht zurückzukehren:
public ActionResult GetProductInCategory(string shortName)
{
IEnumerable<Product> = repository.Get()......
return View();
}
So, hier ist das Problem: ich brauche eine Abfrage, um Produkt aus diesen drei Tabellen mit Lambda zu nehmen, aber Ich kann nicht verstehen, wie man das macht.
Ich kann linq nicht verwenden, weil ich direkten Zugriff nur auf eine Tabelle in der gesamten Datenbank habe.
Entschuldigung für schlechte eplanation, wenn Sie irgendwelche Fragen über Architektur haben, um die ganze Ansicht zu bekommen, werde ich versuchen, Ihnen zu antworten.
Sie möchten also Daten mit einem Lambda (Sie benötigen LINQ) zurückgeben, aber Sie können die Daten nicht erhalten, weil Sie keine Berechtigung haben? : S – mattytommo
Ich denke, es ist nicht, dass er keine Erlaubnis hat, Problem ist sein 'IBaseRepository' wird gezwungen, nur zu tippen, 'T'. –
gideon