Вот странный.
После переименования класса одна из моих форм стала давать мне ошибки в конструкторе, отказываясь открывать. Самое смешное, что когда я запустил программу, форма работала отлично.
Я начал отменять свои изменения, чтобы вывести проблему. Теперь я полностью вернулся к последнему коммиту - в котором я знаю форма работала в конструкторе - очистил решение и удалил папки bin / и obj /, а также * .suo файл для хорошей меры.
Форма по-прежнему не отображается в конструкторе.
Вот ошибки, которые он выдает:
- Не удалось найти 'MyNamespace.MyControl'. Пожалуйста, убедитесь, что ссылка на сборку, которая содержит этот тип. Если этот тип является частью вашего проекта разработки, убедитесь, что проект был успешно собран.
- Переменная 'myControl1' либо необъявлена, либо никогда не назначалась.
Переменная и объявлена, и назначена, и MyControl прекрасно работает (опять же, форма отлично работает, когда программа действительно запущена). Еще страннее, если я пытаюсь создать новую форму и перетащить на нее MyControl, я получаю эту ошибку Entity-Framework:
Не удалось создать компонент MyControl. Сообщение об ошибке следующее:
'System.ArgumentException: указанное именованное соединение либо не найдено в конфигурации, не предназначено для использования с поставщиком EntityClient, либо недопустимо.
в System.Data.EntityClient.EntityConnection.ChangeConnectionString (String newConnectionString)
в System.Data.EntityClient.EntityConnection..ctor (String connectionString)
в System.Data.Objects.ObjectContect.CreateEntityConnection (String connectionString)
и т. д.
В моей строке подключения нет ничего плохого: она работала раньше, и, опять же, она работает, когда я фактически запускаю программу (элемент управления уже существует в старой форме из предыдущего коммита).
Любые идеи вообще? Я в полном недоумении.
[Изменить]
Единственный значимый код:
MyControl.cs
public MyControl()
{
_entities = new MyEFEntities(); //Entity-framework generated class
}
MyForm.Designer.cs
private void InitializeComponent()
{
this.myControl1 = new MyNamespace.MyControl();
...
this.Controls.Add(this.myControl1);
}
MyEFDatabase.Designer.cs
public MyEFEntities() : base("name=MyEFEntities", "MyEFEntities") { ... }
App.Config
<connectionStrings>
<add name="MyEFEntities" connectionString="metadata=res://*/MyEFDatabase.csdl|res://*/MyEFDatabase.ssdl|res://*/MyEFDatabase.msl;provider=System.Data.SqlClient;provider connection string="Data Source=MyDatabaseServer;Initial Catalog=MyDatabase;Integrated Security=True;MultipleActiveResultSets=True"" providerName="System.Data.EntityClient" />
</connectionStrings>
Я попробовал "заменить "
на '
" трюк - не помогло.
[Edit2] Это происходит и с новыми проектами, но не сразу. Только после того, как немного поигрался (это имеет отношение к добавлению отношения «многие к одному», которое EF не выяснило само по себе), но я не могу понять точные шаги для воспроизведения.