Convert.ChangeType() для EntityObject
Я работаю над MySQL, используя.Net Connector 6.3.6 и создал модели Entity на 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. Но я получаю исключение, говоря, что "объект должен реализовывать IConvertible", когда я использую Covert.ChangeType() для EntityObject. Как преодолеть эту проблему? Редактировать: К вашему сведению, мое основное намерение - сделать так, чтобы метод был как можно более универсальным, чтобы не требовалось приведение к конкретному типу таблицы.
Спасибо, оповещатель
2 ответа
Следовал следующему обобщенному шаблону хранилища: [ссылка]http://www.codeproject.com/Articles/37155/Implementing-Repository-Pattern-With-Entity-Framew[ссылка] Это очень интуитивно понятно и соответствует моему требованию:)
Вы изобретаете колесо.
public void AddToTable<TEntity>(ObjectContext dataContext, TEntity tableObj)
{
dataContext.CreateObjectSet<TEntity>().AddObject(tableObj);
}
И, пожалуйста, не ешьте исключения.