你應該在存儲過程中這樣做。這將基本上格式化和存儲您的查詢。您可以設置從代碼傳入的參數,然後讀出結果。
實施例:
C#的方法:
private void SetNote()
{
const string sql = "sp_SelectControllerNoteByID";
using (var conn = MocSystem.GetMocDbConnection())
{
using (var comm = new SqlCommand(sql, conn))
{
comm.CommandType = CommandType.StoredProcedure;
comm.Parameters.Add(new SqlParameter("@ControllerNoteID", ControllerNoteId));
try
{
conn.Open();
using (var rdr = comm.ExecuteReader())
{
while (rdr.Read())
{
CommentText = rdr["NoteText"].ToString();
_commentor = new User(new Guid(rdr["NoteAuthor"].ToString()));
CommentDate = (DateTime)rdr["NoteDate"];
MocRequestId = (int)rdr["MocRequestID"];
}
}
}
catch (Exception ex)
{
HasError = true;
ErrorMessage += "\nThere was a problem building the note: " + ex.Message;
}
}
}
}
(在此示例SQL Server)的數據庫管理系統上的存儲過程:
ALTER proc [dbo].[sp_SelectControllerNoteByID]
@ControllerNoteID int
AS
SELECT
ControllerNoteID,
NoteText,
NoteDate,
NoteAuthor,
MocRequestID
FROM
ControllerNotes
WHERE
ControllerNoteID = @ControllerNoteID
所以在這裏我們所說的存儲的過程,其在這種情況下只是一個簡單的select語句,然後我們通過ADO將它讀出到一個對象中。現在,通過這種方式,您可以修改查詢而無需重新編譯。除非您添加參數,否則您將不得不更新代碼中的參數。
聽起來像是不錯的情況下MyBatis的:http://mybatis.org/dotnet.html – biziclop
Visual Studio中有一個實體框架,可能是有用的,但它添加的ORM的複雜性大的層。 –
我只是真的想找下降的文件,可能與.sql'的'的延伸,能夠引用它們的代碼莫名其妙的地方。那可能嗎?也許我甚至可以傳遞其屬性和方法可以被引用的對象? – Jason