【发布时间】:2016-09-01 12:44:12
【问题描述】:
在 3 层架构(C#、ADO.NET)中,数据集和数据表是从数据层返回数据到表示层的唯一选择吗?我一直在使用 Datatables,但我什么时候会尝试这样做
public User getUserByP(User user)
{
User t = new User();
using(SqlConnection con = new SqlConnection(Conexion.Cn))
{
con.Open();
SqlCommand command = new SqlCommand("spLogIn_User", con);
command.CommandType = CommandType.StoredProcedure;
command.Parameters.AddWithValue("@user", User.user);
command.Parameters.AddWithValue("@password", User.Pass);
SqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
t.IdUser = reader.GetInt32(0);
t.Name = reader.GetString(1);
t.LastName = reader.GetString(2);
t.Access = reader.GetString(3);
t.user = reader.GetString(4);
t.Pass = reader.GetString(5);
}
}
return t;
}
我有一个错误,因为数据层和表示层之间没有通信。这在 MVC 中是可行的(我认为),但在这里没有。因此,如果只想返回 1 个结果,datatble 或 dataset 是唯一的选择吗?
【问题讨论】:
-
不,当然它们不是唯一的选择。还有很多其他的,比如 Linq-To-Sql、Linq-To-Entities、Dapper.Net、手动填充自定义类 etc.pp
-
您的问题与
DataSet/DataTable有什么关系?你没有使用一个。确切的错误是什么,它的消息是什么?它是在哪里提出的? -
这是一个例子,如果我想从 de 数据层返回一个对象到我的表示层,它不会工作,因为我不能在我的表示层中有实体,除非我从 depresentation dll 引用 de数据 dll。
-
与大多数开发人员的想法相反,答案是否定的。事实上,DataSets/DataTables 是 2000 年代早期的,也许是 2000 年代中期。现在有这样更好的方法。由于 Entity-Framework 已经问世,我现在尝试制作对象库(Poco's),并使用 DataReaders 或 EF 来填充 Poco's。
标签: winforms ado.net dataset 3-tier