2017-07-18 11 views
1

次のガイドを使用して、xamarinプロジェクトのデータベースファイルをデプロイしました。Xamarin sqliteモデルをデータベーステーブルにマッピングする

http://arteksoftware.com/deploying-a-database-file-with-a-xamarin-forms-app/は私のようなモデルクラスを作成しました:

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

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

私はSQLite.Net.SQLiteException

dbConn.Insert(newPerson); 

取得していますリポジトリに挿入をしよう:テーブルの人が持っていますActorIdという名前の列がありません。

データベースの列名がActor_Idの場合、モデルの[Column]属性でテーブルにマップしないでください。

+0

あなたはどのライブラリを使用していますか:SQLite.Net-PCLまたはsqlite-net? – apineda

+0

私はSQLite.Net-PCLを使用しています – ClueSelecter

+0

変数名をActor_Idに変更してテーブルの列と一致させることができますが、列属性を使用して別の名前でマップすることができるかどうかを知りたかったと思います。 – ClueSelecter

答えて

0

あなたの電話機/エミュレータは、以前のデータベーススキーマを持つアプリケーションで以前に導入されている可能性があります。この場合

、あなたがする必要があります。お使いの携帯電話/エミュレータの既存のアプリを削除し

  • 。次に、新しいデータベーススキーマを使用して作成されるため、次の実行はOKになります。 OR
  • データベースのアップグレードスクリプトを実行して、現在の古いデータベースのスキーマを変更します。あなたのアプリが既に店に公開している場合にのみこれを実行してください。
+0

アプリを再インストールしましたが、まだ同じエラーが発生しています。最初にデータベースファイルを追加してモデルを作成しました。データベースには既存のデータが付属しています。 – ClueSelecter

0

問題は、モデルでSQLiteライブラリを使用していたことがわかりました。 SQLite.Net.Attributesを使用するように変更すると、正しいマッピングが可能になりました。

using SQLite.Net.Attributes; 
関連する問題