我正在使用EF与codefirst和LocalDb。下面的代码不完全是我的,但我发现它重现了同样的问题。 第一次运行后,我用Visual Studio打开localDb文件,没有任何表,但主函数中的查询工作正常。 另一件事 - 每次运行都会调用CreateDatabaseIfNotExists。
<add name="SampleDbContainer" connectionString="Data Source=(LocalDB)\v11.0;attachdbfilename=|DataDirectory|\SampleDb.mdf;integrated security=True;MultipleActiveResultSets=True" providerName="System.Data.SqlClient" />
public partial class SampleDbContainer : DbContext
{
public SampleDbContainer() : base("name=SampleDbContainer")
{
public DbSet<Parameter> Parameters { get; set; }
}
public class Parameter
{
[Key]
public string Name { get; set; }
public string Value { get; set; }
}
class Program
{
static void Main(string[] args)
{
Database.SetInitializer(new Initializer());
var ctx = new SampleDbContainer();
Console.WriteLine(ctx.Parameters.Count().ToString());
}
}
class Initializer : CreateDatabaseIfNotExists<SampleDbContainer>
{
protected override void Seed(SampleDbContainer context)
{
base.Seed(context);
context.Parameters.Add(new Parameter { Name = "test", Value = "TestValue" });
context.SaveChanges();
}
}