2009-07-09 69 views
0

我想在存儲庫模式中使用我自己的Model類。我不想依賴於LINQ to SQL生成的類。那是可行的嗎?如何處理Where(以及其他選項時,它的一個Func<MyModel, bool>但LINQ to SQL的想要一個Func<LinqToSqlModel, bool>使用LINQ to SQL而不生成模型的存儲庫模式

我已經設計了這一點,但我可能在工程師說,它是開始......

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

這是太多重定向?

所有我想做的是有MyModel的存儲庫能夠在後端是否的LINQ to SQL,LINQ到Enities等 任何實現任何人都不會有任何資源?

回答

0

我決定改用流利的NHibernate。

2

我覺得你在這裏創造了很多開銷。 Linq to Sql生成的所有類都是部分的,所以如果你正確設置你的名字空間,你可以用你想要的任何信息來擴展這些類。如果您想隱藏任何內容,請在dbml中將其訪問級別設置爲內部

我真的不會推薦重寫這些類。

0

我真的不明白爲什麼你需要從零開始實施一切。 但是,如果您希望在存儲庫上擁有更多控件,則只需使用部分類即可實現該功能。

0

如果您希望您的模型將linq替換爲sql模型,則可以使用屬性修飾您的模型,從而允許您基本定義自己的模型,並告訴linq sql如何使用datacontext將模型連線你必須建立和)

例子:

[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;} 
} 

然後,您可以創建一個DataContext,並告訴它如何處理你的模型像這樣:

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

我不希望我的模型被耦合到接近linq的sql。 – 2009-07-09 15:47:46