private object DoLazyLoad(Type type, object entity, string propertyName) { var castedEntity = entity as IProxyTargetAccessor; Type genericType = type.IsGenericType ? type.GetGenericArguments()[0] : type; MethodInfo method = typeof(NodeMapper).GetMethod("LoadRelatedEntitiesWithId"); MethodInfo generic = method.MakeGenericMethod(genericType); int id = MapperHelper.GetIdentity(castedEntity.DynProxyGetTarget()); object result = generic.Invoke(null, new object[] { id, propertyName }); if (type.Namespace != "System.Collections.Generic") { result = ((IEnumerable)result).Cast <object>().ToArray().FirstOrDefault(); } return(result); }
internal Node SaveAndReturnAsNode(object entity) { if (entity == null) { return(null); } int id = MapperHelper.GetIdentity(entity); Node node = null; if (id <= 0) { node = this.CreateNode(entity); node.Create(); MapperHelper.SetIdentity(entity, node.Id); } else { node = Node.Get(id); this.UpdateNode(node, entity); } return(node); }
public void Delete <T>(T entity) where T : class { Node node = Node.Get(MapperHelper.GetIdentity <T>(entity)); node.Delete(); }