2015-08-18 14 views
5

Uygulamamın ilk sürümlerinde SugarORM kullanıyorum. Şimdi, DB'ye eklenen yeni tabloları olan ikinci sürümde çalışıyorum.Şeker ORM Geçişi: Yeni tablo damlaları oluşturun/varolan tabloları yeniden oluşturun

SugarORM documentation'a göre "Sugar, yeni varlıklar için tabloları otomatik olarak oluşturacaktır, bu nedenle, taşıma komut dosyanızın yalnızca mevcut tablolardaki değişikliklerin ihtiyaçlarını karşılaması gerekir."

İşte yaptığım budur:

  1. yeni kayıt sınıfını düzenlendi AndroidManifest <meta-data android:name="VERSION" android:value="2" />
  2. DB versiyonunu arttırıldı. public class NewModel extends SugarRecord<NewModel>

Uygulamayı çalıştırdığınızda, Şeker yeni tabloyu oluşturdu, ancak maalesef yerel olarak kaydedilen tüm verileri silerek mevcut tabloları da bıraktı/oluşturdu!

Ayrıca, CREATE TABLE NEW_MODEL bildirimi içeren 2.sql geçiş komut dosyası ekleyerek yeni tabloyu kendim oluşturmaya çalıştım. Maalesef, "Tablo zaten var" diye bir istisna attı çünkü Şeker yeni masayı yarattı ve sonra senaryonumu çalıştırmaya çalıştı!

Herhangi bir öneriniz var mı?

cevap

11

Yeni sürüm numarasıyla boş bir geçiş komut dosyası oluşturmak zorunda olduğum bir çözüme vardım! Şimdi, eski tabloları bırakmadan/oluşturmadan yeni tabloyu oluşturur. Yani

, sonuçlandırmak:
  1. AndroidManifest DB sürüm numarasını arttır.
  2. Yeni Şeker kayıt sınıfınızı oluşturun.
  3. Öğeler/sugar_upgrades altına yerleştirilen yeni DB sürümünden sonra adlandırılmış boş bir taşıma komut dosyası ekleyin. (ör. 2.sql).
+0

Bu dokümantasyonda bahsedilmediğini, bana bir sürü baş ağrısına yol açtığını hayretle şaşırtıyor .. –

+1

Şeker belgelerinde pek çok şeyden bahsetmediği hayret verici ... – Eugene

İlgili konular