如何使用DBContext将数据永久保存在我的本地sql DB中?




我试图理解为什么当我的应用程序关闭时,我的数据没有保存在我的本地SQL数据库中。
我正在运行一个简单的控制台应用程序,该应用程序连接到 SQL 服务器。

这是我的连接字符串:

Data Source=(localdb)mssqllocaldb;Initial Catalog=SwagAiDb;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False

我创建了以下类:

public partial class SwagAiDbContext : DbContext
{
public SwagAiDbContext()
{
}
public SwagAiDbContext(DbContextOptions<SwagAiDbContext> options)
: base(options)
{
}
public virtual DbSet<Company> Company { get; set; }
public virtual DbSet<IndustrySection> IndustrySection { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if (!optionsBuilder.IsConfigured)
{
optionsBuilder.UseSqlServer("Server=(localdb)\mssqllocaldb;Database=SwagAiDb;Trusted_Connection=True;");
}
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Company>(entity =>
{
entity.Property(e => e.CompanyName).IsRequired();
entity.Property(e => e.Url).IsRequired();
});
modelBuilder.Entity<IndustrySection>(entity =>
{
entity.HasKey(e => e.IndustryCode)
.HasName("PK_IndustryCode");
entity.Property(e => e.IndustryCode).ValueGeneratedNever();
});
OnModelCreatingPartial(modelBuilder);
}
partial void OnModelCreatingPartial(ModelBuilder modelBuilder);
}

在我的代码中,我调用以下方法只是作为示例("公司"是数据库上的一个表(。我想稍后用关闭应用程序时未删除的实际数据填充我的数据库。

using (var db = new SwagAiDbContext())
{
db.Company.Add(new Company{ [... adding the required parameters here...] });
db.SaveChanges();
}

数据将添加到数据库中。一切看起来都很好。但是当我重新启动我的应用程序时,数据库是空的。所有表都存在,但未找到任何数据。

请帮助我。

尝试使用SubmitChanges()而不是SaveChanges();

检查是否正在使用DropCreateDatabaseAlways数据库初始值设定项选项。

编辑: 另一种尝试选择: 将连接字符串移动到应用配置

<connectionStrings>
<add name="SwagAiDbContext"  
connectionString="data source=(localdb)mssqllocaldb;Initial Catalog=SwagAiDb;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False" 
providerName="System.Data.SqlClient" />
</connectionStrings>

并像这样重写数据库上下文:

public SwagAiDbContext()
: base("name=SwagAiDbContext")
{
}
public virtual DbSet<Company> Company { get; set; }
public virtual DbSet<IndustrySection> IndustrySection { get; set; }

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Company>(entity =>
{
entity.Property(e => e.CompanyName).IsRequired();
entity.Property(e => e.Url).IsRequired();
});
modelBuilder.Entity<IndustrySection>(entity =>
{
entity.HasKey(e => e.IndustryCode)
.HasName("PK_IndustryCode");
entity.Property(e => e.IndustryCode).ValueGeneratedNever();
});
}

最新更新