【发布时间】:2011-04-05 17:41:40
【问题描述】:
错误信息:
“支持 '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”,当我尝试将联系人对象添加到上下文时会发生错误。我在这里有什么遗漏吗?
【问题讨论】:
-
从您的数据库中删除 __MigrationHistory 表
-
@ZahidHasan 绝对不要删除 __MigrationsHistory 表,除非您完全了解 __MigrationsHistory 的用途并愿意手动协调代码和数据库之间的差异,并在生产中进行相同的更改。
标签: .net entity-framework-4 code-first