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

Wcf 我可以将自己的模型类与Linq to SQL一起使用吗?,wcf,linq-to-sql,Wcf,Linq To Sql,我有一个相当大的应用程序,我的数据访问策略一直很老套: 每个表有4个存储过程:TableName\u Select、TableName\u Insert、TableName\u Update、TableName\u Delete 我的应用程序的每个逻辑域都有一个MSSQLSDomainService类。在这个类中,我有相应的方法来选择、插入、更新和删除数据库中的某些内容 我想在一个单独的类库项目中维护我自己的模型类,以及WCF服务的服务合同。这使我能够仅从web应用或windows应用引用裸体模

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

每个表有4个存储过程:TableName\u Select、TableName\u Insert、TableName\u Update、TableName\u Delete

我的应用程序的每个逻辑域都有一个MSSQLSDomainService类。在这个类中,我有相应的方法来选择、插入、更新和删除数据库中的某些内容

我想在一个单独的类库项目中维护我自己的模型类,以及WCF服务的服务合同。这使我能够仅从web应用或windows应用引用裸体模型、服务合同和WCF服务客户端。我也不使用自动生成的WCF服务客户端


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

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

但是,Linq到Sql还支持自定义映射,默认情况下使用属性,其中类型映射到表,其属性映射到列,使用构造时提供给DataContext的

L2S有两个功能—隐式使用和。使用第二种方法,您可以手动启动一个Linq到Sql数据上下文,它公开您自己类型的EntitySet


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

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

但是,Linq到Sql还支持自定义映射,默认情况下使用属性,其中类型映射到表,其属性映射到列,使用构造时提供给DataContext的

L2S有两个功能—隐式使用和。使用第二种方法,您可以手动启动一个Linq到Sql数据上下文,它公开您自己类型的EntitySet


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

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


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

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


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

FTW

FTW

我不是这样做的——我做了一些类似于@Randy在回答中描述的事情。不过,我是通过接口来完成的。好吧,我想我将使用Linq to SQL作为一种更快的CRUD操作方法。在数据访问层中,将LINQ类映射到我自己的模型类。然后,我可以保留我的模型,并且在我向类/表添加列时,它可以避免我更新存储过程。我不是这样做的-我做了一些类似于@Randy在回答中描述的方法。不过,我是通过接口来完成的。好吧,我想我将使用Linq to SQL作为一种更快的CRUD操作方法。在数据访问层中,将LINQ类映射到我自己的模型类。这样我就可以保留我的模型,并且在向类/表添加列时,它可以避免更新存储过程。