2009-06-30 4 views
1

Ich bemerke eine Menge der Beispiele für ASP.NET verwenden Linq2Sql als Datenquelle.Nicht Linq2Sql Modell Binding Beispiele in ASP.NET MVC

Gibt es Beispiele, die zeigen, wie die Modellbindung mit einer Nicht-Linq2Sql-Datenquelle verwendet wird, dh eine Datenmenge oder (wie in meinem Fall) eine generische Liste/Sammlung von Elementen basierend auf einem benutzerdefinierten Geschäftsobjekt? das heißt

public class WebsiteList : List<Website> 
{ 
    public WebsiteList() 
    { 
    } 
} 

ASP.NET MVC ist groß, vor allem für seinen Ansatz „Gebrauch, was Sie wollen“. Es ist nur eine Schande, dass so viele Beispiele Linq2Sql verwenden.

Antwort

2

Viele Beispiele, die Sie verwenden können, indem Sie den Linq2Sql-Teil durch ein eigenes benutzerdefiniertes Repository ersetzen. Da es IQueryable ist, können Sie es durch "WebsiteList.AsQueryable()" ersetzen und die meisten Beispiele verwenden, wie es ist. Zum Beispiel, hier ist eine Dummy-Repository Ich verwende:

public class FakeRepository<T> : IResourceRepository<T> where T : class 
{ 
    private readonly List<T> items = new List<T>(); 
    private readonly IObjectFactory resolver; 

    public FakeRepository(IObjectFactory resolver) 
    { 
     this.resolver = resolver; 
    } 

    public IQueryable<T> GetAll() 
    { 
     return this.items.AsQueryable(); 
    } 

    public void Save(T item) 
    { 
     if (!this.items.Contains(item)) 
     { 
      this.items.Add(item); 
     } 
    } 

    public void Delete(T item) 
    { 
     this.items.Remove(item); 
    } 

    public T Create() 
    { 
     return this.resolver.GetInstance<T>(); 
    } 
} 

ich das aus mit dem realen Repository leicht austauschen kann (die Linq2Sql sein kann, ADO.NET Entities, SubSonic, ...).

0

Linq to SQL übernimmt Ihre Datenbanktabellen und ordnet sie Business-Klassen zu. Um dasselbe ohne Linq zu SQL zu tun, modellieren Sie Ihre Datenklassen einfach manuell und fügen Sie Code zum Lesen und Speichern in die Datenbank ein.

+0

Ich mache das ~ mit ~ LINQ-to-SQL auch. Ich mag die enge Bindung des Rests meiner Codebasis an LINQ-generierte Klassen nicht, daher werden sie zwischen den von mir erstellten POCOs übersetzt. – mmcdole

+0

Danke. Dies beantwortet auch meine Frage, aber ich bin mir nicht sicher, wie ich beides als Antworten auswählen soll. – Dkong