SQL的最佳实践对象

时间:2014-11-10 09:40:22

标签: c# sql

我试过搜索但找不到合适的答案。 我正在创建一个包含许多不同对象的应用程序。这些对象的数据保存在MSSQL数据库中。获取数据的最佳方法是什么?

为简单起见,我将在这里使用两个对象: ItemObject UserObject

它们都有一个构造函数,它将从数据库中获取数据:

public ItemObject(int ID) //same one for UserObject
{
    //Code to get the data from the database for this particular item
}

ItemObject有一个名为CreatedBy的属性,它是一个UserObject。

现在的问题是创建ItemObject的最佳方法是什么? 我有两种可能的解决方案:

解决方案#1:

public ItemObject(int ID)
{
    DataTable dt = dal.GetDataTable("SELECT TOP 1 * FROM Items WHERE ID = @ID")
    this.CreatedBy = new UserObject((int)dt.rows[0]["UserID"])
}

解决方案#2

public ItemObject(int ID)
{
    DataTable dt = dal.GetDataTable("SELECT TOP 1 * FROM Items INNER JOIN Users ON Items.CreatedBy = Users.ID WHERE Items.ID = @ID")
    this.CreatedBy = new UserObject((int)dt.rows[0]["UserID"], dt.rows[0]["Username"].ToString())
}

public UserObject(int ID, string Username)
{
    this.ID = ID;
    this.Username = Username;
}

在解决方案#1中,我要求数据两次,但在解决方案#2中,我要求数据一次。虽然解决方案#1更“清洁”,更容易阅读。

史蒂夫修正后编辑。

1 个答案:

答案 0 :(得分:1)

我会选择解决方案二。从我的观点来看,解决方案1是不可接受的,尽管它“更清洁”。 我认为阅读对象没有最佳实践。为此,我非常喜欢实体框架。