首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在EntityFramework核心Sqlite中启用迁移

如何在EntityFramework核心Sqlite中启用迁移
EN

Stack Overflow用户
提问于 2019-07-22 19:36:25
回答 3查看 3.2K关注 0票数 0

我有Dbset和创建这样的数据库。当第一次创建db时,当我在dbset中添加列之后,则迁移不起作用,未找到表列。请告诉我如何在Xamarin表单中启用EF Core Sqlite迁移。

代码语言:javascript
复制
public  BaseSQLRespository(string databasePath)
{
    try
    {
        _databasePath = databasePath;

        Database.EnsureCreated();

        // bool IsDatabaseCreated= ;
        // Settings.IsDatabaseCreatedSettings = IsDatabaseCreated;
    }
    catch (Exception ex)
    {
        throw ex;
    }
}

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
    try
    {
        optionsBuilder.UseSqlite(string.Format("Filename={0}", _databasePath));
    }
    catch (Exception ex)
    {
        throw ex;
    }
}
EN

回答 3

Stack Overflow用户

发布于 2019-07-23 13:49:21

假设您使用add-migration命令为新列创建了迁移,您可以通过调用Migrate()方法而不是EnsureCreated()在运行时启用迁移的执行。该方法的文档可以在here中找到。

根据微软的文档,Migrate方法与EnsureCreated方法不兼容,后者在创建数据库模式时实际上绕过了迁移-因此在您的情况下,您必须在尝试新代码之前删除旧数据库(卸载应用程序或清除其数据)。

不要在调用Migrate()之前调用EnsureCreated()EnsureCreated()绕过了创建模式的迁移,这会导致Migrate()失败。

来源:EF Core - Apply migrations at runtime

票数 2
EN

Stack Overflow用户

发布于 2019-07-23 05:49:03

要添加初始迁移,请运行以下命令:

代码语言:javascript
复制
dotnet ef migrations add YourNameOfMigration

接下来,将迁移应用于数据库以创建模式:

代码语言:javascript
复制
dotnet ef database update

Migrations

每次向模型添加新字段时,都应该添加迁移并将其应用于DB。

票数 0
EN

Stack Overflow用户

发布于 2019-07-23 14:04:45

我猜你的配置是错误的,你不应该在ctor中调用Database.EnsureCreated();,因为OnConfiguring()还没有被调用,你的数据库也没有初始化。

您可以创建一个在serviceProvider启动后调用的方法。

代码语言:javascript
复制
   public static void Initialize(IServiceProvider serviceProvider)
   {
            var context = serviceProvider.GetRequiredService<BaseSQLRespository>();//use your service provider any thing which you can get your current created `BaseSQLRespository`
            context.Database.EnsureCreated();//once call when your app is started. (it is up to you which method you used to call)
   ...
   ...
   }

除了,这里有相似的主题和不同的解决方案,你可以查看:Error in Database.EnsureCreated() while using Entity Framework with Sqlite in Xamarin

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57145233

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档