2016-03-30 11 views
4

私は、MvvmCross Xamarinプロジェクトの拡張メソッドにTwinCoders NuGetと一緒にSQLite-netを使用しています。私は将来モデルを修正してもデータベースを更新しておきたいと思っています。SQLite-Net Extensions - CreateTable関数は既存のテーブルを変更しますか?

私の質問は、モデルに基づいてSQLiteテーブルを作成するためにCreateTable関数を使用し、データベースがタブレット/電話機に既に存在していても、構造が異なっている(テーブルに列がないとしますこれは最後の更新で追加されました)、この関数は既存のテーブルを変更しますか?ありがとう!

+0

https://github.com/praeclarum/sqlite-net/wiki/AutomaticMigrations –

答えて

0

私の場合、答えは常にはいでした。モデルのプロパティの名前を変更したところ、データはそのまま残っていましたが、既存の各レコードには新しいプロパティがありましたが空でした。まだId値を持っていた今、すべてのレコードを

class Model { 
    int Id { get; set; } 
    string Dates { get; set; } 
} 

と消去されませんでしたが、それらはすべても:

オリジナル:

class Model { 
    int Id { get; set; } 
    string Date { get; set; } 
} 

変更

は、だから、このようなことを行ってきました期待されるように空のDates列を持っていました。

言うまでもなく、新しいテーブルは作成されませんでした。

編集:私はSQLite-Netのみ、拡張ライブラリはありませんが、最終結果は同じでなければならないことにも注意してください。

2

ありがとうございました! SQLite-Netは実際に自動移行を実装します。 1列の名前が変更された場合、新しいカラムは新しい名前で作成されます

  • と:それは次のように「ALTER DROPのCOLUMN」との欠如のSQLiteからコマンド「ALTERは、列の名前を変更」扱い古いものは、列がドロップされた場合、それはデータベースに残りますクエリ
  • によって無視されますが、クエリはそれを

を無視する私はデータ型を変更したときに何が起こるかはまだ試していません1つの列(属性)のうち、私たちのプロジェクトでは当てはまらないことを願っています。

関連する問題