Я бы предложил использовать что-то вроде Linq to SQL или Entity Framework (или другого ORM) и создать хранилище CRUD (Create, Read, Update, Delete). Но метод для «D» на самом деле будет методом обновления, который обновляет поле isDeleted
.
Вот пример моего CRUD-хранилища (также с сервисным уровнем).
http://dotnetblogger.com/post/2010/07/04/MVC2-Separating-Concerns-with-Service-and-Repository-Layers.aspx
Пример:
Public Class UserRepository : Implements IUserRepository
Private dc As MyDatabaseDataContext
Public Sub New()
dc = New MyDatabaseDataContext
End Sub
''# note, this adds a user based on an OpenID - might not be what you're looking for
Public Sub AddUser(ByVal openid As OpenID) Implements IUserRepository.AddUser
Dim user As New User
user.MemberSince = DateTime.Now
openid.User = user
dc.OpenIDs.InsertOnSubmit(openid)
End Sub
''# This gets users as Queryable so that we can defer the query till the end.
Public Function GetUsers() As IQueryable(Of User) Implements IUserRepository.GetUsers
Dim users = (From u In dc.Users
Select u)
Return users.AsQueryable
End Function
''# Here's the magic function that you're looking for. DELETE is actually an UPDATE.
Public Sub DeleteUser(ByVal user as User) Implements IUserRepository.DeleteUser
Dim _user = (From u In dc.Users
Where u.ID = user.ID
Select u).Single
_user.isDeleted = True
End Sub
''# Basic Update Method
Public Sub UpdateUser(ByVal user As User) Implements IUserRepository.UpdateUser
Dim _user = (From u In dc.Users
Where u.ID = user.ID
Select u).Single
With _user
.About = user.About
.BirthDate = user.BirthDate
.Email = user.Email
.isClosed = user.isClosed
.isProfileComplete = user.isProfileComplete
.RegionID = user.RegionID
.Reputation = user.Reputation
.UserName = user.UserName
.WebSite = user.WebSite
End With
End Sub
''# Make sure to call SubmitChanges
Public Sub SubmitChanges() Implements IUserRepository.SubmitChanges
dc.SubmitChanges()
End Sub
End Class