我使用.Net连接器6.3.6在MySQL上工作,并在VS2010上创建了实体模型。我计划编写一个泛型方法,将一个EntityObject添加到相应的表中。下面是它的外观:
public void AddToTable(ObjectContext dataContext, string tableName, EntityObject tableObj)
{
try
{
Type type = dataContext.GetType();
string methodName = "AddTo" + tableName;
MethodInfo methodInfo = type.GetMethod(methodName);
PropertyInfo propInfo = dataContext.GetType().GetProperty(tableName);
Object[] parameters = new Object[] { Convert.ChangeType(tableObj, propInfo.PropertyType) };
methodInfo.Invoke(dataContext, parameters);
}
catch (Exception e)
{
edit://gonna handle it appropriately here!
}
}ObjectContext将是实际的ObjectContext类。但是当我在一个EntityObject上使用Covert.ChangeType()时,我得到的异常提示是"object必须实现IConvertible“。如何克服这个问题?Edit:仅供参考,我的主要意图是写一个尽可能泛型的方法,这样就不需要转换为特定的表类型。
谢谢,警报器
发布于 2012-06-13 23:02:41
遵循以下通用存储库模式:链接http://www.codeproject.com/Articles/37155/Implementing-Repository-Pattern-With-Entity-Framew[link]它非常直观,并且符合我的要求:)
发布于 2011-03-02 22:41:39
你在重新发明轮子。
public void AddToTable<TEntity>(ObjectContext dataContext, TEntity tableObj)
{
dataContext.CreateObjectSet<TEntity>().AddObject(tableObj);
}请不要吃异常。
https://stackoverflow.com/questions/5166005
复制相似问题