用的是 linq to entities 。
首先假定我的数据库内有10个表,我想编写这样几个方法:
public List<T> GetXXX<T>(???);
public int AddNewXXX<T>(T obj);
public int ModifyXXX<T>(T obj);
public int DeleteXXX<T>(T obj);
然后我只需要在调用的时候写上T的实际类型,我就能用这个4个方法查询、添加、修改、删除10个表的所有数据。
这样的方法能实现不?
???的内容个人理解应该是:Func<T,bool> func之类的东西吧……
重要的是,我如何用这个T来获取数据库内对应的表?只有获取到表什么之类的东西才能查询添加修改删除吧?
给你个思路:
让所有的实体类继承自一个基类。
基类提供一个虚方法,该方法反射当前类型的所有非复杂类型的成员,将属性名认作是表名,然后存取属性值就可以了。
最好是自定义一些特性(Attribute)
比如 PrimaryKey,ForeKey,Identity之类的。
派生类可以重写其基类的这个方法,以实现某些特殊需要。没有重写就使用基类的默认实现,不过反射比较消耗资源。
可以,首先你要让你的这些表类 T 都实现接口 I 而接口I则规定了AddNew(), Modify() ,Delete方法()。而你的public int AddNewXXX<T>(T obj);
public int ModifyXXX<T>(T obj);
public int DeleteXXX<T>(T obj);
这些只要直接调用t.addnew()就行了。