Я объясню здесь немного больше на английском языке, чтобы каждый мог понять. Надеюсь, это кому-нибудь поможет. Это происходит из-за того, что Visual Studio не удается подключиться к модели базы данных.
Это происходит, когда вы меняете имя и/или путь в классе, который расширяет DbContext, и не меняете его в файле Web.config (в самой внешней части вашего проекта: в корне).
Пример:
Представьте, что вы замаскировали код DbContext:
а) Вы щелкнули правой кнопкой мыши папку в своем проекте и добавили «Модель данных сущности ADO.NET» и назвали ее «Модель1».
Вы получаете следующий код:
public class Model1 : DbContext
{
// Your context has been configured to use a 'Model1' connection string from your application's
// configuration file (App.config or Web.config). By default, this connection string targets the
// 'Skelleton.Models.Model1' database on your LocalDb instance.
//
// If you wish to target a different database and/or database provider, modify the 'Model1'
// connection string in the application configuration file.
public Model1()
: base("name=Model1")
{
}
// Add a DbSet for each entity type that you want to include in your model. For more information
// on configuring and using a Code First model, see http://go.microsoft.com/fwlink/?LinkId=390109.
// public virtual DbSet<MyEntity> MyEntities { get; set; }
}
б) Теперь вы решили, что имя, которое вы только что написали, просто плохое, поэтому вы меняете его на AppContext.
Теперь ваш код выглядит так:
public class AppContext : DbContext
{
// Your context has been configured to use a 'AppContext' connection string from your application's
// configuration file (App.config or Web.config). By default, this connection string targets the
// 'Skelleton.Models.AppContext' database on your LocalDb instance.
//
// If you wish to target a different database and/or database provider, modify the 'AppContext'
// connection string in the application configuration file.
public AppContext()
: base("name=AppContext")
{
}
// Add a DbSet for each entity type that you want to include in your model. For more information
// on configuring and using a Code First model, see http://go.microsoft.com/fwlink/?LinkId=390109.
// public virtual DbSet<MyEntity> MyEntities { get; set; }
}
Затем вы пытаетесь выполнить операции CRUD (создание, чтение, обновление, удаление) с представлениями, но это не удается!
Это почему?
Что ж, если мы перейдем к файлу web.config, то увидим следующую строку:
<add name="Model1" connectionString="data source=(LocalDb)\v11.0;initial catalog=Skelleton.Models.Model1;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
(Эта строка обычно ниже <add name="DefaultConnection"
)
Вот в чем проблема. Вам нужно изменить Model1 на имя, которое вы дали!
В этом случае должно быть указано «AppContext» вместо «Model1».
А где написано:
initial catalog=Skelleton.Models.Model1;
Подтвердите это:
Это имя файла .cs с классом
Пространство имен (или ряд имен (разделенных точками), которые стоят перед именем вашего класса) является правильным. Важно отметить, что вы не добавляете в конец расширение «.cs»; просто имя вашего файла.
Это должно выглядеть так:
Поскольку я изменил имя класса как внутри, так и снаружи (внутри него и его имя файла) и не изменил его местоположение, я просто переименовал его в AppContext.
После того, как это было сделано. Вы можете нормально скаффолдить ;)
Надеюсь это поможет!
person
Jose A
schedule
05.02.2015