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 回答