需要写一个通用方法,传一个实体类进去可以将需要的数据插入另一个结构一样字段名不同的表中的方法.可以是见解,方法,示例.目前碰到的问题是,如何传一个事先无法确认的实力类,然后进行判断组装.
解决方案 »
- ASP.NET 权限设置问题
- 在aps.net中传参数的问题
- 真纱布!数据绑定后,LinkButton控件的OnClientClick属性的问题
- 如何触发GridView的“选择”事件?
- 怎么把数据表里前10行的数据读到DataGrid1里????(ASP.NET)
- 用什么工具能打开.db数据库文件?查看内容
- 紧急求解:(DataList内)字符串的格式化输出
- HttpContext.Current.Items.Add(CacheKey, object)。无法保存状态值?
- 实用难题求教:如何可以指定ValidationSummary验证控件错误信息内容?谢谢!!!
- 谁帮我下载一个microsoft sdk for java 4.0公司不能下载郁闷啊
- WEB版抽奖系统问题请教
- ASP.NET构造函数请教
id(int) name(nvarchar50) age(int)
1 张三 20
2 李四 23
3 王五 22
B表
num(int) nickname(nvarchar50) nianling(int)
现在我要写一个通用的方法.它要实现的功能是.
我给它一个A表实体.它根据id号将
id name age
1 张三 20
插入B表.
public T SetValueByS<S,T>(S source) where:T new()
{
T t = new T();
PropertyInfo[] spiArr = typeof(S).GetProperties(),tpiArr=typeof(T).GetProperties();
for(int i=0;i<spiArr.Length;i++)
{
tpiArr.SetValue(spiArr.GetValue(source),t);
}
return t;
}大概意思,没测试
{
using (var conn = GetMyDbConnection())
{
var cmd = conn.CreateCommand();
cmd.CommandText = sql;
cmd.CommandType = System.Data.CommandType.Text;
if (setter != null)
setter(cmd.Parameters, obj);
cmd.ExecuteNonQuery();
}
}或者如果是一对象封装的方式,也可以使用事件方式来实现这里的setter。总之是把将来才需要扩展实现的流程作为回调方法。例如我们可以把setter作为一个static变量复用(省得在城里里到处重复写),然后可以这样在创建了一个新的object之后使用数据库class MyType
{
public string FieldA;
public DateTime FieldB;
public int FieldC;
}public static Action<SqlParameterCollection, object> DeleteMyTypeObject = (ps, obj) =>
{
ps.Add("@P", System.Data.SqlDbType.Int).Value = ((MyType)obj).FieldC;
};void test()
{
MyType x = new MyType{ FieldC=1234};
RunSqlServerCommand("delete from abc where mc>@P", x, DeleteMyTypeObject);
}
设计要扩展,但无需反射。
不过其实ado.net非常简单,我才懒得写SqlHelper呢。