日期:2014-05-17  浏览次数:20491 次

linq数据传递问题
我使用的ado.net实体数据模型做为实体层,将用户输入数据传回到实体对象时出错,代码如下:
 protected void btnSave_Click(object sender, EventArgs e)
    {
        User user = new User();
        user.ID = moduleID.Text;
        user.UserName = moduleName.Text;
        user.UserRole.RoleID = ddlRole.SelectedValue;//运行到此行时报错,显示“未将对象引用设置到对象的实例” ,user为实体对象,UserRole为user对象的导航属性,我觉得这里出错应该是因为user类实例化后并不包涵RoleID对象,所以报错,请问这种情况有什么解决方法?
}

------解决方案--------------------
user.UserRole= db.UserRole.Single(r=>r.RoleID == ddlRole.SelectedValue);

1.注意类型转换
2. 注意判断ddlRole.SelectedValue是否为空等
------解决方案--------------------
2种方式

1。user.UserRoleID = ddlRole.SelectedValue
2.UserRole ur=new UserRole{RoleID=ddlRole.SelectedValue};
 user.UserRole=ur;
------解决方案--------------------
   确定
ddlRole.SelectedValue 是和user.UserRole.RoleID 同一类型;

另外ddlRole.SelectedValue是否是有效的值?