コード例 #1
0
ファイル: NodeMapper.cs プロジェクト: khoadd/Neo4jD
        private static T Get <T>(Node node) where T : class
        {
            T entity = LazyLoader.EnableLazyLoading <T>();

            //if (node.GetProperty("clazz") != typeof(T).ToString())
            if (_reflectionHelper.CanCast(node.GetProperty("clazz"), typeof(T).ToString()) == false)
            {
                throw new InvalidCastException(string.Format("Retrieved object with ID '{0}' is an instance of '{1}' and unable to cast it to '{2}'", node.Id.ToString(), node.GetProperty("clazz"), typeof(T).ToString()));
            }
            typeof(T).GetProperties().Where(pr => pr.CanRead && MapperHelper.IsAnId(pr) == false).ToList().ForEach(property =>
            {
                property.SetValue(entity, MapperHelper.CastPropertyValue(property, node.GetProperty(property.Name)), null);
            });

            entity = MapperHelper.SetIdentity <T>(entity, node.Id);
            return(entity);
        }
コード例 #2
0
ファイル: NodeMapper.cs プロジェクト: khoadd/Neo4jD
        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);
        }