Linq to sql 使用LINQ To SQL而不生成模型的存储库模式

Linq to sql 使用LINQ To SQL而不生成模型的存储库模式,linq-to-sql,model,repository-pattern,Linq To Sql,Model,Repository Pattern,我想在存储库模式中使用我自己的模型类。我不想依赖于LINQtoSQL生成的类。这可行吗?当它是Func但LINQ to SQL需要Func时,如何处理Where(以及其他选择) 我设计了这个,但我可能开始过度设计它 interface IModelConverter<T1, T2> { T2 Convert(T1 item); T1 Convert(T2 item); } 接口IModelConverter { T2转换(T1项); T1转换(T2项目); } 这是不是太

我想在存储库模式中使用我自己的模型类。我不想依赖于LINQtoSQL生成的类。这可行吗?当它是
Func
但LINQ to SQL需要
Func
时,如何处理
Where
(以及其他选择)

我设计了这个,但我可能开始过度设计它

interface IModelConverter<T1, T2>
{
  T2 Convert(T1 item);
  T1 Convert(T2 item);
}
接口IModelConverter { T2转换(T1项); T1转换(T2项目); } 这是不是太多了

我想做的就是拥有一个
MyModel
存储库,它能够在后端实现任何实现,无论是LINQ到SQL、LINQ到Enities等等。
有人有任何资源吗?

我认为您在这里造成了很大的开销。Linq to Sql生成的所有类都是局部的,因此如果您正确设置了名称空间,您可以使用您想要的任何信息来扩展这些类。如果您想隐藏任何内容,请在dbml中将其访问级别设置为内部


我真的不建议完全重写这些类。

我真的不明白为什么需要从头开始实现所有东西。
但是,如果您想在存储库上拥有更多的控件,您可以简单地使用分部类来实现这一点。

如果您希望您的模型替换linq-to-sql模型,您可以使用属性来装饰您的模型,这允许您基本上定义自己的模型,并告诉linq-to-sql如何将您的模型与datacontex连接起来t(您也必须构建)

例如:

[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>();
var context=newdatacontext(connectionString);
GetTable();

我决定切换到Fluent NHibernate。

我不希望我的模型与linq和sql如此接近。