错误信息:
“支持 ‘AddressBook’ 上下文的模型自创建数据库以来已更改。手动删除/更新数据库,或使用 IDatabaseInitializer 实例调用 Database.SetInitializer。例如,RecreateDatabaseIfModelChanges 策略将自动删除并重新创建数据库,并且可选择用新数据播种它。”
我正在尝试使用代码优先功能,以下是我写的:
var modelBuilder = new ModelBuilder(); var model = modelBuilder.CreateModel(); using (AddressBook context = new AddressBook(model)) { var contact = new Contact { ContactID = 10000, FirstName = "Brian", LastName = "Lara", ModifiedDate = DateTime.Now, AddDate = DateTime.Now, Title = "Mr." }; context.contacts.Add(contact); int result = context.SaveChanges(); Console.WriteLine("Result :- "+ result.ToString()); }
上下文类:
public class AddressBook : DbContext { public AddressBook() { } public AddressBook(DbModel AddressBook) : base(AddressBook) { } public DbSet<Contact> contacts { get; set; } public DbSet<Address> Addresses { get; set; } }
和连接字符串:
<?xml version="1.0" encoding="utf-8" ?> <configuration> <connectionStrings> <add name="AddressBook" providerName="System.Data.SqlClient" connectionString="Data Source=MyMachine;Initial Catalog=AddressBook; Integrated Security=True;MultipleActiveResultSets=True;"/> </connectionStrings> </configuration>
因此,数据库名称是“AddressBook”,当我尝试将联系人对象添加到上下文时会发生错误。我在这里错过了什么吗?
现在是:
protected override void OnModelCreating(DbModelBuilder modelBuilder) { Database.SetInitializer<YourDbContext>(null); base.OnModelCreating(modelBuilder); }
在 YourDbContext.cs 文件中。