2

我正在使用 .Net 连接器 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”。如何克服这个问题?编辑:仅供参考,我的主要目的是编写一个尽可能通用的方法,这样就不需要转换为特定的表类型。

谢谢,警报器

4

2 回答 2

2

你在重新发明轮子。

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

请不要吃例外。

于 2011-03-02T14:41:39.387 回答
0

遵循以下通用存储库模式:[链接]http://www.codeproject.com/Articles/37155/Implementing-Repository-Pattern-With-Entity-Framew[链接]它非常直观,符合我的要求:)

于 2012-06-13T15:02:40.913 回答