哪一个更好 - 在ASPX页面或CodeBehind中声明SqlDataSource?

Ali*_*007 2 .net c# sql asp.net datasource

哪一个更好 - 在ASPX页面或CodeBehind中声明SqlDataSource?

方法#A.作为程序员,您可以在.aspx页面中定义SqlDataSource,例如:

<asp:SqlDataSource ID="Sql_ID" runat="server" ConnectionString="<%$ ConnectionStrings:Con_Str %>"
    SelectCommand="SELECT * FROM [table_name]">
    <SelectParameters>
        <asp:Parameter Name="user_id"/>
    </SelectParameters>
</asp:SqlDataSource>
Run Code Online (Sandbox Code Playgroud)

方法#B.此外,您可以在C#CodeBehind中执行此操作

using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["Con_Str"].ToString()))
{
    string qry = SELECT * FROM [table_name];

    SqlDataAdapter da = new SqlDataAdapter();
    DataTable dt = new DataTable();

    using (SqlCommand cmd = new SqlCommand(qry, conn))
    {
        cmd.Parameters.Add("@user_id", SqlDbType.UniqueIdentifier).Value = user_id;
        da.SelectCommand = cmd;

        try
        {
            conn.Open();
            da.Fill(dt);
            conn.Close();
        }
        catch
        {
            // Do something ;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

哪种方法[A或B]更好?为什么?

wal*_*her 10

两者都不是.最好的方法是将数据访问完全与UI分离(到一个单独的项目,或者至少是名称空间,这样你就可以根据需要轻松交换各种实现).然后,在您的代码隐藏中,只需引用公开的存储库并执行绑定.但是,您的页面代码隐藏不应包含任何数据访问.

尝试对3层架构进行一些研究.除非它是一个非常基本的应用程序,否则你应该学习如何将它分成多个层.