Entity Framework - GetObjectByKey не разрешает первичный ключ - PullRequest
1 голос
/ 01 июля 2011

Я пытаюсь получить запись, используя функцию GetObjectByKey, например:

Enumerable<KeyValuePair<string, object>> entityKeyValues =
                new KeyValuePair<string, object>[] { 
                new KeyValuePair<string, object>("JournalId", 
                                   new Guid("6491305f-91d9-4002-8c47-8ad1a870cb11")) };

EntityKey key = new System.Data.EntityKey(string.Format("{0}.{1}", ObjectContextManager.Current.DefaultContainerName, "Journal"), entityKeyValues);

Но я получаю это исключение

System.ArgumentException: предоставленный список ключейЗначение пары содержит неверное количество записей.В типе Namespace.Journal определено 54 ключевых поля, но предоставлено 1.Имя параметра: ключ

Тип Journal является представлением.

Как использовать эту функцию только с одним полем, причина, по которой мне это нужно, заключается в том, что я неЯ не хочу указывать универсальный тип, просто один, чтобы получить его из заданного имени набора сущностей.

Заранее спасибо

1 Ответ

1 голос
/ 01 июля 2011

Представление в базе данных не имеет ключа, но EF нуждается в нем, поэтому, когда вы вставляете представление в модель, EF возьмет все необнуляемые, недвоичные столбцы и определит их как ключ - в данный момент ваш ключ состоит из из 54 столбцов. Решение заключается в том, чтобы вручную изменить файл EDMX (в виде XML), но при использовании конструктора EDMX по умолчанию ваши изменения будут удаляться после каждого обновления из базы данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...