我试过搜索但找不到合适的答案。 我正在创建一个包含许多不同对象的应用程序。这些对象的数据保存在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更“清洁”,更容易阅读。
史蒂夫修正后编辑。
答案 0 :(得分:1)
我会选择解决方案二。从我的观点来看,解决方案1是不可接受的,尽管它“更清洁”。 我认为阅读对象没有最佳实践。为此,我非常喜欢实体框架。