我可以将自己的Model类与Linq to SQL一起使用吗?

时间:2010-03-19 15:16:20

标签: wcf linq-to-sql

我有一个相当大的应用程序,我的数据访问策略一直都很老派:

每个表有4个存储过程:TableName_Select,TableName_Insert,TableName_Update,TableName_Delete。

我的应用程序的每个逻辑域都有一个MsSql#DOMAIN #Service类。在该类中,我有相应的方法来选择,插入,更新和删除数据库中的内容。

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

我可以将自己的Model类与Linq-to-SQL一起使用 - 或者我是否必须使用Linq-to-SQL中的自动生成的模型,然后在返回它们之前将它们映射到我的数据访问层中的模型回到WCF服务?

3 个答案:

答案 0 :(得分:1)

EF Code First FTW!

答案 1 :(得分:0)

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

但是,Linq to Sql还支持自定义映射(默认使用Attributes),其中类型映射到表,并使用MappingSource将其属性映射到列,该AttributeMappingSource在构造时提供给DataContext。

L2S附带两个 - XMLMappingSource(隐式使用)和 {{3}} 。第二种方法可以手动使用Linq To Sql DataContext来公开你自己类型的EntitySet。

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

答案 2 :(得分:0)

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

因此,简短的回答是肯定的,您可以将自己的类与L2S实体结合使用。