包装EF方法

时间:2013-10-30 14:11:27

标签: c# mysql entity-framework

我问过上一个问题,我提供了这段代码:

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。到底是怎么回事?那么实体然后在包装器方法中应该具有什么参数类型?很困惑。

1 个答案:

答案 0 :(得分:2)

正在发生的事情是entity参数属于Object类型,因此当您将其传递给通用AddRecord<T>方法时,T会变为Object。然后,在该方法中,Set<T>()变为Set<Object>(),并且由于Object不是您的实体类型之一,因此您的上下文无法为其找到DbSet,并且它barfs。

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