2009-07-09 6 views
0

Ich möchte meine eigenen Model-Klassen in einem Repository-Muster verwenden. Ich möchte nicht von den Klassen abhängig sein, die LINQ to SQL generiert. Ist das machbar? Wie gehe ich mit den Where (und anderen Auswahlen, wenn es ein Func<MyModel, bool> aber LINQ to SQL will ein Func<LinqToSqlModel, bool>?Repository-Muster mit LINQ To SQL ohne generierte Modelle

ich das ausgedacht habe, aber ich könnte es über Ingenieur beginnen ...

interface IModelConverter<T1, T2> 
{ 
    T2 Convert(T1 item); 
    T1 Convert(T2 item); 
} 

ist das zu viel Umleitung?

Alles, was ich tun möchte, ist ein Repository von MyModel haben, die jede Umsetzung im Backend, ob LINQ to SQL, LINQ to Enities haben ist in der Lage, usw. hat jemand irgendwelche Ressourcen ?

.?

Antwort

0

Ich entschied mich für Fluent NHibernate.

2

Ich denke, dass Sie hier eine Menge Overhead erstellen. Alle von Linq bis Sql generierten Klassen sind partiell. Wenn Sie also Ihre Namespaces richtig einrichten, können Sie diese Klassen einfach um die gewünschten Informationen erweitern. Und wenn Sie etwas verbergen möchten, legen Sie die Zugriffsebene auf intern in der dbml fest.

Ich würde wirklich nicht empfehlen, die Klassen insgesamt neu zu schreiben.

0

Ich verstehe nicht wirklich, warum Sie alles von Grund auf neu implementieren müssen. Aber wenn Sie mehr Kontrolle über das Repository haben wollen, können Sie einfach Teilklasse verwenden, um dies zu erreichen.

0

Wenn Sie möchten, dass Ihr Modell das Modell linq to sql ersetzt, können Sie Ihr Modell mit Attributen dekorieren, mit denen Sie im Grunde Ihr eigenes Modell definieren und linq an sql mitteilen, wie Sie Ihr Modell mit dem Datenkontext verbinden Sie haben auch)

Beispiel zu bauen:

[Table(Name="SomeTable")] 
public class SomeClass 
{ 
    [Column(IsPrimaryKey=true, IsDbGenerated=true, AutoSync=AutoSync.OnInsert)] 
    internal int MyID {get; set;} 

    [Column] 
    public String MyString {get; set;} 
} 

Sie dann ein Datacontext erstellen und es sagen, wie Ihr Modell zu handhaben wie so:

var context = new DataContext(connectionString); 
context.GetTable<SomeClass>(); 
+0

Ich möchte nicht, dass mein Modell so nah an linq zu sql gekoppelt wird. –