使用EntityFramework (EF) 给Combobox赋值时遇到问题的解决

一、创建一个Ado.net实体模型

image

二、根据实体模型创建上下文和实体映射

遇到的问题场景是:模型的属性“代码生成策略”如果是 使用“旧的 ObjectContext ”方式时,Linq默认返回的ObjectQuery可以直接赋值给combobox ,如果是使用的T4模板,则系统系统创建的上下文对象为DBContext Linq 返回的对象为DBquery,不可以直接赋值给combobox.

1、[旧的 ObjectContext 方式时的截图]

image

2、[DBcontext是的截图]

image

三、异常解决方法

增加toList()方法解决

        private void button4_Click(object sender, EventArgs e)
        {

            using (Model1Container db = new Model1Container())
            {
                using (Model1Container db1 = new Model1Container())
                {
                    CBox_User.DisplayMember = "Name";
                    CBox_User.ValueMember = "Id";
                    var query =( from u in db1.Entity1Set
                                orderby u.LastName
                                select new { Name = u.LastName + ", " + u.FirstName, Id = u.FirstName }).

ToList();

                    CBox_User.DataSource = query ;
                    int recordCount = query.Count();
                }
            }
        }

四、使用“代码生成策略”:T4模板时的源码

链接: https://pan.baidu.com/s/1eSw9W8U 密码: 5sb7

打赏支付宝:

QQ20171114152709_thumb

posted @ 2017-11-15 13:25  孺牛码塔  阅读(665)  评论(1编辑  收藏  举报