none
Entity Framework 的 Model类型该如何转化? RRS feed

  • 问题

  •  

    //DAL层
         public EasyFastCMS.Model.UserGroup GetModel(int ID)
            {
                Model.UserGroup model = new Model.UserGroup();
                using (var edm = new EasyFastCMSEntities())
                {
                    var query = edm.EasyFastCMS_UserGroup.Where(ug => ug.ID == ID);
                    foreach (EasyFastCMS_UserGroup ug in query)
                    {
                        model.ID = ug.ID;
                        model.GroupName = ug.GroupName;
                    }
                }
                return model;
            }
    
    //BLL层
    private readonly SQLServerDAL.UserGroup dal = new SQLServerDAL.UserGroup();
    public Model.UserGroup GetModel(int id)
            {
                return dal.GetModel(id);
            }
    
    //Web层
    
    protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    LoadInfo();
                }
            }
    
    private void LoadInfo()
            {
                BLL.UserGroup bll = new BLL.UserGroup();
                Model.UserGroup model = bll.GetModel(Convert.ToInt32(Request.QueryString["id"]));
    
                this.Admin_Users_UserGroup_UserGroupUpDate_ltlID.Text = model.ID.ToString();
                this.Admin_Users_UserGroup_UserGroupUpDate_txtGroupName.Text=model.GroupName;
                this.Admin_Users_UserGroup_UserGroupUpDate_txtGroupIntro.Text=model.GroupIntro;
                this.Admin_Users_UserGroup_UserGroupUpDate_txtOrderID.Text = model.OrderID.ToString();
                ViewState["model"] = model;
            }
    


    如上代码。原本的程序架构为:
    DAL
    BLL
    Model
    Web

    后来考虑使用ORM,在DAL中增加了一个EF。为了合理的分层,希望EF只负责数据库的增删改查,得到的结果转成Model层中对应的类,我现在的做法感觉是脱裤子放屁,太罗嗦,可是如果不这么做,那么EF就即充当了Model,又充当了DAL。感觉不合理。

    能不能做到将EF得到的类(数据库表结果)EasyFastCMS_UserGroup 转化成 Model层中的UserGroup.cs类。当然如果能实现
    List<EasyFastCMS_UserGroup> 转化成 List<UserGroup> 那就最好不过了。

    求助解决办法。

     



    • 已编辑 快乐鸟 2011年11月18日 14:26
    2011年11月18日 14:18

全部回复

  • EDMX只是设计用的,DAL应该用csdl、msl和ssdl。当然,你也可以用code first,不用edmx。

    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
    Visual C++ MVP
    2011年11月18日 14:37
    版主