Xamarin 实体框架迁移 - 表“名称”已经存在

发布于 2025-01-18 09:40:38 字数 249 浏览 0 评论 0原文

因此,我有一个带有本地数据库的 Xamarin 应用程序,我使用命令 this.Database.Migrate() 来应用任何挂起的迁移,它一开始工作正常,但问题是,当我卸载该应用程序并再次安装时,该应用程序尝试执行相同的挂起迁移,并且收到错误“表'名称'已存在”。有没有办法忽略已经存在的表,因为我不想在每次卸载应用程序时删除用户本地数据。 我使用命令 dotnet efmigrations addinitial 来创建迁移。

So, I have a Xamarin app with a local DB, and I'm using the command this.Database.Migrate() to apply any pending migration, it works fine at first, but the problem is, when I uninstall the app and install again, the app try to execute the same pending migration, and I got the error "Table 'name' already exists". Is there a way to ignore tables that already exists 'cause I don't want to delete the users local data every time they uninstall the app.
I'm using the command dotnet ef migrations add initial to create migrations.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

眼眸里的快感 2025-01-25 09:40:38

对于面对这个问题的每个人,我解决了使用SQLiteConnection创建方法。您需要使用sqlite; 添加

public static bool TableExists(string tableName)
    {
        var dbPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), databaseName);

        using (var db = new SQLiteConnection(dbPath))
        {
            var info = db.GetTableInfo(tableName);
            if (info.Any())
            {
                return true;
            }
        }

        return false;
    }

To everyone facing this problem, I solved creating a method using SQLiteConnection. You need to add using SQLite; :

public static bool TableExists(string tableName)
    {
        var dbPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), databaseName);

        using (var db = new SQLiteConnection(dbPath))
        {
            var info = db.GetTableInfo(tableName);
            if (info.Any())
            {
                return true;
            }
        }

        return false;
    }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文