internal static void ChangeId(M modl, object newId) { Sync(modl); var id = Identity.FromId(newId, Definitions); if (modl.Modl.Id != id) { InstanceStore.ChangeId(modl, id); } }
private static Identity GetId(M modl) { if (!Definitions.HasAutomaticId && Definitions.HasIdProperty) { var id = Definitions.IdProperty.GetValue(modl); if (IdConverter.HasValue(id)) { return(Identity.FromId(id, Definitions)); } } return(Identity.GenerateNewId(Definitions)); }
internal static void Sync(M modl) { if (modl.Modl == null) { InstanceStore.AddNewInstance(GetId(modl), modl); } InstanceStore.Get(modl.Modl.Id).Sync(modl); if (HasIdChanged(modl)) { InstanceStore.ChangeId(modl, Identity.FromId(Definitions.IdProperty.GetValue(modl), Definitions)); } }
public static M Get(object id) => Handler <M> .Get(id is Identity?id as Identity : Identity.FromId(id, Definitions));