2017-07-18 86 views
1

我已经使用以下指南为xamarin项目部署了一个数据库文件。 http://arteksoftware.com/deploying-a-database-file-with-a-xamarin-forms-app/Xamarin sqlite映射模型到数据库表

我创建了一个模型类为这样:

[Table ("Person")] 
public class Person 
{ 
    [PrimaryKey, AutoIncrement, Column("Id")] 
    public int Id { get; set; } 

    [NotNull, Column("Actor_Id")] 
    public int ActorId { get; set; } 
} 

当我尝试做一个插入存储库中的

dbConn.Insert(newPerson); 

我越来越SQLite.Net.SQLiteException:表的人有没有名为ActorId的列。

如果数据库中的列名是Actor_Id,那么模型中的[Column]属性不应将其映射到表中。

+0

你在使用哪个库:SQLite.Net-PCL或者sqlite-net? – apineda

+0

我正在使用SQLite.Net-PCL – ClueSelecter

+0

我知道我可以将变量名更改为Actor_Id以匹配表列,但我想知道是否可以通过列属性映射它与不同的名称。 – ClueSelecter

回答

0

您的手机/模拟器有可能以前使用旧数据库架构部署的应用程序。

在这种情况下,你将需要:

  • 在您的手机/仿真器中删除现有的应用程序。然后下一次运行应该是确定的,因为它是使用新的数据库模式创建的。或
  • 执行数据库升级脚本以更改当前旧数据库的模式。只有在您的应用已发布到商店时才能执行此操作。
+0

我重新安装了应用程序,但我仍然收到相同的错误。我先添加了数据库文件,然后创建了模型。数据库随现有数据一起提供。 – ClueSelecter

0

我发现问题是我在模型中使用SQLite库。改变它使用SQLite.Net.Attributes允许正确的映射。

using SQLite.Net.Attributes;