这是userModel
public class userModel
{
public string userNo{ get; set; }
public string userCode{ get; set; }
public string userName{ get; set; }
public string authtime{ get; set; }
public string duplLoginYn{ get; set; }
public string userLang{ get; set; }
public string siteLogo{ get; set; }
public string theme{ get; set; }
public string deptNo{ get; set; }
public string deptName{ get; set; }
public string usiteNo{ get; set; }
public int connDur{ get; set; }
public string menuPosition{ get; set; }
}
这是登录控制器
public ActionResult login(string id, string pass, string scode)
{
Dictionary<string, object> sessionData = null;
userModel userInfo = new userModel();
String SqlCommand = "USP_LOGIN";
OleDbParameter[] arParms = new OleDbParameter[3];
arParms[0] = new OleDbParameter("ID", id);
arParms[1] = new OleDbParameter("PW", pass);
arParms[2] = new OleDbParameter("SCODE", scode);
try
{
DataSet UserInfo = dataController.ExecuteDataset(dataController.CONN_STRING, CommandType.StoredProcedure, SqlCommand, arParms);
if (UserInfo.Tables[0].Rows.Count > 0)
{
//sessionData = new Dictionary<string, object>();
for (int i = 0; UserInfo.Tables[0].Rows[0].Table.Columns.Count > i; i++)
{
sessionData.Add(UserInfo.Tables[0].Rows[0].Table.Columns[i].Caption, UserInfo.Tables[0].Rows[0].ItemArray[i]);
}
Session.Add("UserInfo", sessionData);
}
return RedirectToAction("main");
}
catch (Exception e)
{
//log
return RedirectToAction("index.mon");
}
}
我想要做的非常简单,将数据集值放入userModel
。但困扰我的是,数据集中的项目数量多于模型。
当两个对象不相同时,我不知道如何匹配数据和设置值。
我应该使用循环吗?或者是否有任何投射对象有助于映射数据? 请! .NET框架必须有用的东西! 如果你有更多的时间,你知道在MVC4中获取数据的更好的做法吗?
使用数据集对我来说看起来很老套。但我不想要任何第三方框架。只需在纯.NET框架中实现这些
答案 0 :(得分:0)
我建议使用像Fluent NHibernate或Entity Framework这样的ORM(对象关系映射器),这正是他们设计的 - 将关系数据从数据库映射到c#对象。
我的偏好是流利的nhibernate,您可以通过nuget安装它并查看https://github.com/jagregory/fluent-nhibernate/wiki/Getting-started
上的入门指南更新:纯.NET方法
如果您不想使用任何外部库,您可以编写一个简单的静态方法,将数据映射到这样的对象:
protected static userModel GetUserFromReader(SqlDataReader reader)
{
var user = new userModel
{
userNo = reader["userNo"],
userCode = reader["userCode"],
userName = reader["userName"]
};
return user;
}
答案 1 :(得分:0)