我正在创建一个ASP .Net网站,并且想为我的数据层使用Linq to SQL类,然后有另一个将服务数据层的项目。林Linq to SQL相当新。Linq to SQL DataContext的用法
我拥有的结构是一个接口,它列出了我在单独的接口中为数据库中的每个表所需的所有CRUD(创建,读取,更新和删除)操作。
然后我有另一个类,它实现的接口是我写我的代码来获取,更新,删除数据等即
Public Function GetCustomers As Iqueryable(of Customer)
Dim Service as New StoreDataContext
Return From c in Service.Customers select c
End Function
什么我注意到我总是在所有写昏暗的服务作为新StoreDataContext我的方法是为了对我的数据做任何事情。
这使我想到并在每个类中创建一个属性,并用datacontext初始化该属性。多走了一步好我想创建一个为MustInherit类,所以所有的类会再继承这个类,并需要作出可能在一个阶段来完成,而不是进入所有类
Public MustInherit Class MyService
Public ReadOnly Property CurrentDataContext As StoreDataContext
Get
Return New StoreDataContext
End Get
End Property
End Class
我的客户的任何变化类看起来像
Public Class CustomerSer
Inherits MyService
Implements ICustomer
Public Function GetCustomers As Iqueryable(of Customer)
Return From c in CurrentDataContext.Customers select c
End Function
正如你可以告诉上面的函数正在使用CurrentDataContext这是从创建的类继承。
问题:
- 这是正确的还是会有在这个设计中的一些缺陷?
- 我是否需要在任何阶段或在我的课程中关闭此服务?
感谢
谢谢,我将看看现在发布的链接。就这样,我正确地理解了你,你是说我有什么是好的,并继续提出什么建议,或者你说我设计的设计是好的,但我需要额外的锅炉板插入等我创建的类?非常感谢 – Computer
继续您的工作,在每个函数的开始处Dim一个新的DataStoreContext。当你正在进行读取(选择)时,这不是一个问题,但是当你进入更新对象时,你需要一个很好的过程:新的上下文,更新对象,提交所有的改变。 –
对不起,还有另一个想法。我的属性创建一个新实例 - 这不就是说,每次我调用该方法时,它会为每个方法创建一个新实例?因此每次都有一个新的环境?谢谢 – Computer