如何发布带有 sqlite 数据库的 uwp 应用程序?

问题描述 投票:0回答:0

当发布应用程序并尝试访问数据库时,应用程序崩溃并且没有任何内容被保存。当我在调试中运行时,更改(在调试运行中)被保存。 这是我构建的另一个项目,看看它是否有效:

app.config

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  </configSections>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
  </startup>
  <entityFramework>
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
      <provider invariantName="System.Data.SQLite" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" />
    </providers>
  </entityFramework>
  <system.data>
    <DbProviderFactories>
      <remove invariant="System.Data.SQLite.EF6" />
      <add name="SQLite Data Provider (Entity Framework 6)" invariant="System.Data.SQLite.EF6" description=".NET Framework Data Provider for SQLite (Entity Framework 6)" type="System.Data.SQLite.EF6.SQLiteProviderFactory, System.Data.SQLite.EF6" />
    <remove invariant="System.Data.SQLite" /><add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".NET Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" /></DbProviderFactories>
  </system.data>
    <connectionStrings>
        <add name="FDb" connectionString="Data Source=.\FDb.db;Version=3" providerName="System.Data.SQLite" />
    </connectionStrings>
</configuration>

尝试类:

    public class Dog
    {
        [Key]
        public int ID { get; set; }
        public string Name { get; set; }
        public Dog()
        {
            ID= 0;
        }
    }

xaml页面的按钮事件:

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        DogContext context = new DogContext();
        context.Dog.Add(new Dog() { Name = txtbxName.Text });
        List<Dog> Dogs = context.Dog.ToList();
        context.SaveChanges()
    }

我安装了 System.Data.SQLite 和 EF6(我在 .net 框架中工作,而不是核心) 试图将连接字符串中的数据源目录更改为不同的目录,但我想将其包含在已发布的应用程序中。我将文件添加到解决方案资源管理器,将“生成操作”更改为“生成”并将“复制到输出目录”更改为“如果有新文件则复制”。在项目属性中,在发布设置下,我将文件包含为数据文件和“必需”,以及“包含”和“必需”。我觉得我在这里错过了一个重要的步骤,因为在调试中它只适用于完整路径但相对路径它只读取数据但不保存数据。

谢谢。

c# sqlite entity-framework uwp
© www.soinside.com 2019 - 2024. All rights reserved.