0

我想在存储库模式中使用我自己的模型类。我不想依赖 LINQ to SQL 生成的类。这可行吗?我如何处理Where( 和其他选择时它 aFunc<MyModel, bool>但 LINQ to SQL 需要 a Func<LinqToSqlModel, bool>

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

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

这是不是重定向太多了?

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

4

4 回答 4

2

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

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

于 2009-07-09T15:39:14.773 回答
0

我真的不明白为什么您需要从头开始实现所有内容。但是如果你想对存储库有更多的控制,你可以简单地使用部分类来实现。

于 2009-07-09T15:40:50.060 回答
0

如果您希望您的模型替换 linq to sql 模型,您可以使用属性装饰您的模型,这允许您基本上定义自己的模型,并告诉 linq to sql 如何将您的模型与数据上下文(您必须构建以及)

例子:

[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>();
于 2009-07-09T15:45:36.493 回答
0

我决定改用 Fluent NHibernate。

于 2009-07-11T03:52:13.483 回答