У меня есть эта родовая версия findById()
метода (KeyType
и EntityType
являются шаблонными параметрами на уровне класса):Generic findById с Entity Framework и составные ключи
public EntityType findById(KeyType key)
{
log.LogDebugStart();
log.LogDebug("id=" + key);
EntityType data;
using (ObjectContextWrapper contextWrapper = TransactionHelper.GetContextWrapper())
{
Entities bdd = contextWrapper.GetContext();
DbSet<EntityType> set = bdd.Set<EntityType>();
data = set.Find(key);
}
log.LogDebugEnd();
return data;
}
Это хорошо работает с ключами одноколоночных (экс : KeyType = long), но я не могу заставить его работать с составным первичным ключом (Ex: KeyType: long []).
Исключение я получаю:
Число первичных ключевых значений, передаваемых должны соответствовать число первичных ключевых значений, определенных на сущности. Название параметра: keyValues
Сущности генерируются из базы данных с помощью файла .edmx
. Оба столбца в моем случае настроены на первичный ключ. В отладчике я очень хорошо вижу, что ключ имеет тип short [2].
Я думал, что это может быть связано с тем, что мой метод не принимает аргумент «params» и что каким-то образом весь массив будет передан как один параметр в метод Find()
, но это должно быть хорошо, как пока я передаю массив моему методу findById()
...
СПАСИБО! Я знал, что это что-то в этом роде, но я не мог понять, как правильно настроить свой параметр ... – Kaidjin