是的,您可以在没有表格的情况下将实体添加到上下文中。我用一个测试项目验证了这一点。请参阅下面的代码。它连接到本地机器上的现有数据库。创建上下文没有任何问题。您甚至可以使用该Entities
属性、添加一个实体和SaveChanges()
. 它将第一次为您创建表格。第二次表不存在时(例如,因为它在创建后被手动删除),它将引发异常。
它将抛出异常,因为它将数据库的状态记录保存在__MigrationHistory
.
using System.Data.Entity;
namespace EntityFrameWorkMissingTableTest
{
class Program
{
static void Main(string[] args)
{
using (var context = new MyContext("Data Source=localhost;Initial Catalog=MyContext;Integrated Security=True"))
{
context.Entities.Add(new Entity());
context.SaveChanges();
}
}
public class MyContext : DbContext
{
public MyContext(string connectionString)
: base(connectionString)
{
}
public DbSet<Entity> Entities { get; set; }
}
public class Entity
{
public int Id { get; set; }
}
}
}