System.MissingMethodException: для этого объекта не определен конструктор без параметров при добавлении объекта в коллекцию - PullRequest
1 голос
/ 16 декабря 2010

Я работаю с EFCodeFirst (EFCTP 5) уже несколько недель, без каких-либо проблем.
Но теперь я получаю исключение при добавлении сущности в коллекцию.

У меня есть User

public class User
{
    public int Id { get; set; }
    public string FirstName { get; set; }
}

и DbContext

public class Foo : DbContext
{
    public DbSet<User> Users { get; set; }
}

Теперь я просто хочу добавить user к DbSet.

Foo f = new Foo();
User us = new User()
{
    FirstName = "FooName"
};

f.User.Add(us); //The exception is thrown on this line

Сообщение об исключении:

"System.MissingMethodException: для этого объекта не определен конструктор без параметров"

Ответы [ 2 ]

1 голос
/ 18 июня 2013

Это сочетание ошибки проектирования в EF и проблемы с отражением.

Часто сообщается:

MissingMethodException: для этого объекта не определен конструктор без параметров.

Когда это означает «я вызвал конструктор, и он вызвал исключение».

Например, если строка подключения неверна в файле конфигурации - ее часто не удастся построитьобъект EF Context;выкидываю ошибку выше.Кажется, что все исключения SQL, касающиеся искаженной строки соединения, съедаются EF или кодом отражения.

Я подозреваю, что здесь происходит нечто подобное.

Включить отлов первого исключения в визуальной студии.См. Исключения в меню отладки, установите флажок для «брошенных» «общеязыковых исключений времени выполнения»

Это должно показать, что происходит с ошибкой в ​​конструкторе.

0 голосов
/ 03 мая 2011

Это может или не может работать для вас, потому что моя ситуация отличается тем, что я использую Шаблон генерации POCO для EF4.

У меня был объект, у которого было readonly свойств, которые я не сделалЯ хочу, чтобы эти свойства не устанавливались, поэтому я создал параметризованный конструктор.Одним из свойств, которое мне нужно было установить, было отношение «многие-1» от нового объекта к другому, которое было передано. Из-за кода исправления прокси-сервера всякий раз, когда это свойство объекта устанавливалось в конструкторе, я получал сообщение InvalidOperationExceptionне был конструктором без параметров для моей сущности.

Решение: создан конструктор protected без параметров с пустым телом.Мне также нужно было сделать это для его подкласса.

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