我正在使用 .Net Connector 6.3.6 处理 MySQL,并在 VS 2010 上创建实体模型。我打算编写一个通用方法,将 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() 时,出现异常提示“对象必须实现 IConvertible”。 如何克服这个问题? 编辑:仅供引用,我的主要目的是编写一个尽可能通用的方法,这样就不需要强制转换为特定的表类型。
谢谢, 警报器
最佳答案
您正在重新发明轮子。
public void AddToTable<TEntity>(ObjectContext dataContext, TEntity tableObj)
{
dataContext.CreateObjectSet<TEntity>().AddObject(tableObj);
}
请不要吃异常。
关于mysql - EntityObject 上的 Convert.ChangeType(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5166005/