构建一个相对简单的网站,需要在数据库中存储一些数据(主要是身份验证,但每个用户都有一些东西)。我之前曾在几个网站上工作过,并在那里使用过数据库,但从未喜欢我访问数据库的方式。
我通常这样做的方法是使用一个SqlMethods.cs,它基本上是一个静态类,有很多静态方法,如bool CheckUserExistence(string username, string password)
和SqlDataReader GetJobListings(int advertiserId)
,每个都基本上是“打开连接,调用一个sproc,返回它返回的内容“。然而,这种方法对我来说似乎不太自然。我不能完全理解我想要的样子,但这似乎......很奇怪。
所以,我的问题是:你如何从asp.net项目访问数据库? 我正在使用SQL2005。我也不认为我需要任何类型的ORM,因为从数据库中获取真的不是很多,但也许它更容易用一个?建议一些事情。 谢谢!
编辑:我目前决定创建一个静态类Sql
,它将包含许多与sql相关的方法(例如ExecuteReader(sprocName, params[])
等)具有给定参数的sproc并返回DataReader
然后,使用Authentication
和CheckUserExistence(username, password)
等方法设置特定功能的类,例如LogoffUser(session)
。这些方法只需调用Sql.ExecuteReader("sp_Auth_CheckUserExistence", _some_params_here_)
并根据需要处理结果
我不知道那是好还是坏,但它现在似乎对我有用。另外,我喜欢它的感觉 - 它完全分离了功能。
那么,还有其他建议吗?
答案 0 :(得分:2)
查看Linq to SQL或Linq to Entities:
http://weblogs.asp.net/scottgu/archive/2007/05/19/using-linq-to-sql-part-1.aspx
http://msdn.microsoft.com/en-us/library/bb386964.aspx
答案 1 :(得分:0)
最简单的方法是为数据库中的每个表创建一个数据访问类。它应该具有表中所有列的私有变量和公共属性,并且您描述的方法应该填充内部变量(或使用它们来更新数据库)。
Public Class MyTable
Private _id As Integer
Private _Name as String
Public ReadOnly Property ID As Integer
' Regular stuff here
End Property
Public Property Name As String
' Regular stuff here
End Property
Public Sub Load()
' Call SQL and get a data reader.
' Set _id and _Name from the data reader.
End Sub
End Class
然后,在您的其他代码中:
Dim mt As New MyTable
mt.Load()
' Now use mt.ID and mt.Name to access the data