我使用linq-to-sql操作数据库如下:ctx.user.single(c=>c.username='abc12345').age = 3;
ctx.submitchange();但是现在'age'这个属性我通过一个方法传过来,我希望传过来的是属性名称,然后修改对性的属性值,我该怎么做呢?
如果自己构建sql语句然后使用ExecuteCommand方法执行的方法我知道,我现在想知道可不可以使用反射进行操作?如果做//如果这里atrrname传过来的值是'age'将改变user表的age属性的值为'value'值
//如果这里atrrname传过来的值是'name'将改变user表的name属性值为'value'值
public void ChangeAtrr(string atrrname,string value)
{
    
}

解决方案 »

  1.   


    //如果这里atrrname传过来的值是'age'将改变user表的age属性的值为'value'值
    //如果这里atrrname传过来的值是'name'将改变user表的name属性值为'value'值
    public void ChangeAtrr(string atrrname,object value)
    {
        var model=ctx.user.single(c=>c.username='abc12345');
        model.GetType().GetProperty(atrrname).SetValue(model, value,null);
        ctx.submitchange();
    }
    貌似是可以的 没测试
      

  2.   

    要思变啊var model = ctx.user.single(c=>c.username='abc12345');
    ChangeAtrr(model,"age",3);
    ctx.submitchange();public void ChangeAtrr(object model,string atrrname,object value)
    {
        model.GetType().GetProperty(atrrname).SetValue(model, value,null);
    }
      

  3.   

    还有个问题,同样是使用linq-to-sql 查询:public TClass GetSingle<TClass>(Guid id)
    {
    var ctx = new RAL.LinqToSql.MessageContext();
    }怎么查询ctx里面类型为'TClass'的表的id = 'id'的数据?反射该怎么写啊?