我想在存储库模式中使用自己的Model类。我不想依赖于LINQ to SQL生成的类。那可行吗?如何处理Where
(以及其Func<MyModel, bool>
时的其他选择,但LINQ to SQL需要Func<LinqToSqlModel, bool>
?
我已经设计过这个,但我可能会开始过度设计它......
interface IModelConverter<T1, T2>
{
T2 Convert(T1 item);
T1 Convert(T2 item);
}
重定向太多了吗?
我想做的就是拥有一个MyModel
的存储库,它可以在后端实现任何实现,无论是LINQ to SQL,LINQ to Enities等。
有没有人有资源?
答案 0 :(得分:2)
我认为你在这里创造了很多开销。 Linq to Sql生成的所有类都是部分的,所以如果你正确设置了命名空间,你可以用你想要的任何信息扩展这些类。如果您要隐藏任何内容,请将其访问级别设置为dbml中的 internal 。
我真的不建议完全重写这些课程。
答案 1 :(得分:0)
我真的不明白为什么你需要从头开始实现一切。 但是如果你想在存储库上有更多的控件,你可以简单地使用 partial class 来实现它。
答案 2 :(得分:0)
如果你想让你的模型将linq替换成sql模型,你可以使用属性来装饰模型,这样你就可以基本定义自己的模型,并告诉linq如何使用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>();
答案 3 :(得分:0)
我决定改用Fluent NHibernate。