我的方法如下
public void UpdateDb(int id)
{
var UpdateMyModel = db.CRM_OPP_DETAILS
.Where(p=> p.ID == id)
.FirstOrDefault();
UpdateMyModel .IS_VALID = false;
db.SaveChanges();
}
如何使用'ModelName字符串参数'作为模型类名。 IE浏览器。如下:
public void UpdateDb(string ModelName , int id)
{
var UpdateMyModel = db.""ModelName ""
.Where(p=> p.ID == id)
.FirstOrDefault();
UpdateMyModel.IS_VALID = false;
db.SaveChanges();
}
答案 0 :(得分:0)
你可以通过使用泛型和接口来实现这一点。 datacontext支持GetTable()
方法。
您可以使用它,例如:
public void UpdateDb<T>(int id) where T : IUpdateDbInterface
{
var UpdateTable = db.GetTable<T>()
.Where(p=> p.ID == id)
.FirstOrDefault();
UpdateTable.IS_VALID = false;
db.SaveChanges();
}
interface IUpdateDbInterface {
int ID { get; set;}
bool IS_VALID { get; set;}
}
要打电话:
UpdateDb<MyRecordType>(1234);
您的通用类型T
将需要至少定义int ID
和bool IS_VALID
的接口约束,否则通用代码将不知道其类型T
是否具有这些字段。当然,您希望能够在所有表上运行的表都需要实现此接口。
如果您坚持使用字符串,请使用Type.GetType( ... )
函数将字符串类名称转换为Type
。然后你可以这样使用这个方法:
public void UpdateDb(Type type, int id)
{
var UpdateTable = db.GetTable(type)
.....
}
但是你仍然需要接口的东西来到你的属性。或者使用反射来处理所有事情,但这在使用ORM时毫无意义。