1.启动和关闭引擎
private void _ActivateEngine() { _engine = new SterlingEngine(); _logger = new SterlingDefaultLogger(SterlingLogLevel.Verbose); _engine.Activate(); Database = _engine.SterlingDatabase.RegisterDatabase(new IsolatedStorageDriver()); } private void _DeactivateEngine() { Database.Flush(); _logger.Detach(); _engine.Dispose(); Database = null; _engine = null; }
2.加载/保存/删除:
public static void Save(this ListItem listItem) { int currentIndex = (Application.Current as App).Database.Query().Count; if (listItem.Key == -1) { listItem.Key = currentIndex; } (Application.Current as App).Database.Save(listItem); (App.Current as App).Database.Flush(); } public static void Delete(this ListItem listItem) { // List list = (Application.Current as App).Database.Query (); //(App.Current as App).Database.Delete(typeof(ListItem), listItem.Text); (App.Current as App).Database.Truncate(typeof(ListItem)); (App.Current as App).Database.Flush(); } public static IEnumerable Load(this IEnumerable listItem) { var list = (Application.Current as App).Database.Query (); return new ObservableCollection (list.Select(item => item.LazyValue.Value).ToList()); } public static int Count(this ListItem listItem) { int currentIndex = (Application.Current as App).Database.Query ().Count; return currentIndex; }
3.删除指定的文本和指定的ID,以文本为例
public static void DeletebyText(string text) { var list = (Application.Current as App).Database.Query(); ObservableCollection collection = new ObservableCollection ( list.Select(item => item.LazyValue.Value).ToList().Where(item => item.Text.Equals(text)) ); foreach (var cll in collection) (App.Current as App).Database.Delete(cll); }
4.用于自动生成键的基础触发器
public class IdentityTrigger: BaseSterlingTrigger where T: class, IBaseModel, new(){ private static int _idx = 1; public IdentityTrigger(ISterlingDatabaseInstance database) { // If a record exists, set it to the highest value plus 1 if (database.Query ().Any()) { _idx = database.Query ().Max(key => key.Key) + 1; } } public override bool BeforeSave(T instance) { if (instance.Id < 1) { instance.Id = _idx++; } return true; } public override void AfterSave(T instance) { return; } public override bool BeforeDelete(int key) { return true; }}
5.自定义序列化程序
public class TypeSerializer : BaseSerializer { ////// Return true if this serializer can handle the object, /// that is, if it can be cast to type /// /// The target ///True if it can be serialized public override bool CanSerialize(Type targetType) { return typeof (Type).IsAssignableFrom(targetType); } ////// Serialize the object /// /// The target /// The writer public override void Serialize(object target, BinaryWriter writer) { var type = target as Type; if (type == null) { throw new SterlingSerializerException( this, target.GetType()); } writer.Write(type.AssemblyQualifiedName); } ////// Deserialize the object /// /// The type of the object /// A reader to deserialize from ///The deserialized object public override object Deserialize( Type type, BinaryReader reader) { return Type.GetType(reader.ReadString()); }}