ObjectSet.AddObject(T) проблема?

ObjectSet.Single(предикат) не работает (методы Where() и toList()), если я не напишу это так:

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

Но я не знаю, что делать, чтобы решить проблему с методами AddObject и DeleteObject:

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

Сообщение об ошибке говорит мне, что "сущность" является неверным аргументом. Проблема связана с EF 4.1?

1 ответ

Решение

Вот несколько фрагментов из моего общего репозитория:

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(), не должно быть необходимости в приведении.

Другие вопросы по тегам