类user包含userid和name属性。其他类类似然后期望用以下方法,实现对数据库数据的更新操作
public void SetModels<T>(SqlCommand cmd,CommandType ct,string[] paramsname)
{
List<T> list = new List<T>();
T obj; obj = (T)Activator.CreateInstance(typeof(T));
foreach (PropertyInfo fi in typeof(T).GetProperties())
{
foreach (string s in paramsname)
{
if (fi.Name == s)
{
cmd.Parameters.AddWithValue(fi.Name, fi.GetValue(obj, null));
}
}
} DB.ExecuteNonQuery(cmd);
}然后发现一个比较傻的问题,我不知道如何能把user类的实体(或者其他类的实体)的属性值给传进上边的方法里边。如果增加参数,比如是增加一个object[]是应该能实现,但总觉得怪怪的?以前一直是1.1所以不太清楚怎么写比较好了。谢谢各位的帮忙
public void SetModels<T>(SqlCommand cmd,CommandType ct,string[] paramsname)
{
List<T> list = new List<T>();
T obj; obj = (T)Activator.CreateInstance(typeof(T));
foreach (PropertyInfo fi in typeof(T).GetProperties())
{
foreach (string s in paramsname)
{
if (fi.Name == s)
{
cmd.Parameters.AddWithValue(fi.Name, fi.GetValue(obj, null));
}
}
} DB.ExecuteNonQuery(cmd);
}然后发现一个比较傻的问题,我不知道如何能把user类的实体(或者其他类的实体)的属性值给传进上边的方法里边。如果增加参数,比如是增加一个object[]是应该能实现,但总觉得怪怪的?以前一直是1.1所以不太清楚怎么写比较好了。谢谢各位的帮忙
解决方案 »
- WPF 获取ListBox子控件
- 大家好.如果vc的dll中返回一个集合vector<XX> c#中有没法接收它?
- 不用pictureBox,怎么直接在From上显示图片
- C# WebClient如何远程写入文本,注意,要以追加形式写入文本。。
- 父窗体传值给子窗体的问题,急死人啊.
- 请问怎样定义和引用类
- 新手求助,c#中设置默认数据库!!!!!!!!!!!!!!!!!!!!!!!
- 我用remoting回调时 在win7和vista操作系统下 客户端无响应
- try catch 结构无法截获异常?
- datagridview如何隐藏指定单元格控件?
- VS2005中Access数据库更新与删除操作
- Address.txt正在被另外一个进程使用,因此该进程不能访问该文件
user ur =new user();
SetModels<u>(...)
public void SetModels<T>(SqlCommand cmd,CommandType ct,string[] paramsname,T post)
然后反射出post的属性值但感觉这样写好像对编程量的减轻作用不大...新接触,有错误请见谅...
-----------------------------------
一般来说没有!
----------------------------------
另一方面可能是因为我用得不熟练吧,数据层的代码看起来写少了,但每次这样调用的话业务的代码好像又增多了 - - 怎么去平衡呢?
----------------------------
这个要看你的实际应用,不过我个人是不喜欢这样去做的!我一般把所有的SQL相关代码都写在数据层里面。而不是由业务层来生成SQLCommand或其它的数据相关操作!
{
List<T> bindingData = new List<T>();
ReportEntity preEntity = null; int index = 1;
foreach (ItemEntity var in itemEntitys)
{
T entity = null;
if (bindingData.Count == 0)
{
T firstItem = new T();
firstItem.itemEntity = null;
firstItem.report = currentPaintingReport; bindingData.Add(firstItem);
}
entity = new T();
entity.itemEntity = var;
entity.report = currentPaintingReport; bindingData.Add(entity);
entity.index = index++;
if (preEntity != null)
{
preEntity.NextItem = entity.Item;
}
preEntity = entity;
}
return bindingData;
}这个是我写的一段,就是要把所有Entity串起来,希望对你有帮助
public static void FillParameter(DbCommand command, object model, params string[] inParameterNames)
{
FillParameter(command, model, new DbType(), null, inParameterNames);
} public static void FillParameter(DbCommand command, object model, DbType outType, string outParameterName, params string[] inParameterNames)
{
Type type = model.GetType();
PropertyInfo pi; if(outParameterName != null)
{
pi = type.GetProperty(outParameterName);
AddParameter(command, outParameterName, outType, ParameterDirection.Output);
} foreach(string inParameterName in inParameterNames)
{
pi = type.GetProperty(inParameterName);
AddParameter(command, inParameterName, pi.GetValue(model, null));
}
}
#endregion