0

我问了一个之前的问题,这段代码是在哪里提供给我的:

public void AddRecord<T>(params T[] items) where T : class
{
    var set = Set<T>();
    foreach (var item in items)
        set.Add(item);
}

现在,这很好,但是我想从另一个方法中调用这个方法。我可以在哪里确定是否需要添加或更新记录。

我试过这个:public void AddNewRec(Object entity, bool add)但是抛出异常:entity type Object is not part of the model for the current context. 到底是怎么回事?那么在包装器方法中我应该为实体设置的参数类型是什么?如此迷茫。

4

1 回答 1

2

发生的事情是你的entity参数是 type Object,所以当你将它传递给你的泛型AddRecord<T>方法时,T变成Object. 然后,在该方法中,Set<T>()变为Set<Object>(),并且由于Object不是您的实体类型之一,因此您的上下文找不到DbSet它的 a ,并且它会出错。

您应该能够通过将您的AddNewRec方法更改为通用方法而不是传递它来使其工作Object:try AddNewRec<T>(T entity, bool add) where T : class。这应该允许您的实体类型过滤到您的AddRecord<T>方法。

于 2013-10-30T14:20:50.363 回答