MVC4将用户信息放入用户模型

时间:2014-07-18 04:17:37

标签: c# .net asp.net-mvc-4

这是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框架中实现这些

2 个答案:

答案 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)