2

.Net Connector 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()を使用すると、「オブジェクトは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 に答える