2

ObjectSet.Single(predicate) は、次のように記述しない限り機能しません (Where() および toList() メソッドも):

ObjectSet.Cast<TEntity>().Single<TEntity>(predicate)

しかし、AddObject および DeleteObject メソッドの問題を解決するために何をすべきかわかりません。

public void Add<TEntity>(TEntity entity)
    {
        ObjectSet.AddObject(entity);
    }

エラーメッセージは、「エンティティ」が間違った引数であることを示しています。問題は EF 4.1 に関連していますか?

4

1 に答える 1

2

以下は、私の汎用リポジトリからの抜粋です。

public void Add<K>(K entity) where K : class
{            
    context.CreateObjectSet<K>().AddObject(entity);
}

public K SingleOrDefault<K>(Expression<Func<K, bool>> predicate) where K : class
{
    K entity = context.CreateObjectSet<K>().SingleOrDefault<K>(predicate);

    return entity;
}

以下のリンクを参照してください: http://msdn.microsoft.com/en-us/library/dd382944.aspx

編集: 作成済みの ObjectSet が既にある場合、クラスは既に TEntity を定義しているため、メソッドを次のように調整する必要があります。

public void Add(TEntity entity)
{
    ObjectSet.AddObject(entity);
}

また、Single() メソッドに対しても同様の調整を行うことができるはずです。キャストは必要ありません。

于 2011-08-04T11:54:27.023 に答える