2010-03-19 57 views
1

我有一个相当大的应用程序,在我的数据访问策略一直相当老派:我可以在Linq to SQL中使用我自己的Model类吗?

我按表4个存储过程:TableName_Select,TableName_Insert,TableName_Update,TableName_Delete。

我有一个MsSql#DOMAIN#服务类为我的应用程序的每个逻辑域。在那个类中,我有相应的方法来选择,插入,更新和删除数据库中的东西。

我想在独立的类库项目中维护自己的Model类以及WCF服务的服务契约。这使我只能引用例如裸体模型,服务合同和WCF服务客户端。一个Web应用程序或一个Windows应用程序。 (我不使用自动生成的WCF服务客户端)

我可以使用自己的Model类以及Linq-to-SQL吗?还是必须使用Linq-to-SQL中自动生成的模型和然后将它们映射到我的数据访问层中的模型中,然后再通过WCF服务返回它们?

回答

0

您不必将自动生成的类型与Linq To Sql数据上下文一起使用,但默认情况下,您使用的类型需要具有您将看到的所有属性注释。

但是,Linq to Sql还支持自定义映射(默认情况下使用属性),其中类型映射到表以及使用MappingSource映射到列的属性,该MappingSource在构造上提供给DataContext。

L2S附带两个 - AttributeMappingSource(隐式使用)和XMLMappingSource。第二个可能是你可以用一个Linq To Sql DataContext来展示你自己类型的EntitySets。

你甚至可以编写自己的MappingSource - 但我认为XML可能覆盖了大多数需求。

+0

我不这样做 - 我做了类似于@Randy在他的回答中描述的方式。但是,我通过接口完成了这一切。 – 2010-03-19 15:28:49

+0

好吧,我想我只是使用Linq to SQL作为更快速的方式来执行CRUD操作。并在数据访问层将LINQ类映射到我自己的Model类。然后我可以保留我的模型,并且当我将一列添加到类/表时,它可以节省我更新存储过程的时间。 – MartinHN 2010-03-20 09:19:26

0

我们在应用程序中做了类似的事情。我们编写了自己的代码生成器来生成我们的L2S类,也称为我们的“应用程序”实体。这些比L2S类轻得多。它们在应用程序级别用于将数据来回传递到我们的后端。每个L2S实体类都有一个与自动映射发生等价的内置应用程序实体。我的意思是,只要L2S实体将数据存储到其属性中,这些值就会自动复制到相应的应用程序实体属性中。然后,我们在每个L2S实体上都有一个方法,它允许我们检索关联的应用程序实体。

所以,简短答案是肯定的,你可以使用自己的类与L2S实体一起使用。

相关问题