Convert.ChangeType () для EntityObject - PullRequest
2 голосов
/ 02 марта 2011

Я работаю над 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 ]

2 голосов
/ 02 марта 2011

Вы заново изобретаете колесо.

 public void AddToTable<TEntity>(ObjectContext dataContext, TEntity tableObj)
 {
     dataContext.CreateObjectSet<TEntity>().AddObject(tableObj);
 }

И, пожалуйста, не ешьте исключения.

0 голосов
/ 13 июня 2012

Следовал следующему обобщенному шаблону хранилища: [ссылка] http://www.codeproject.com/Articles/37155/Implementing-Repository-Pattern-With-Entity-Framew[link] Это очень интуитивно понятно и соответствует моему требованию:)

...