예제 #1
0
파일: NodeMapper.cs 프로젝트: khoadd/Neo4jD
        private Node CreateNode(object entity)
        {
            Node node = new Node();

            node.AddProperty("clazz", entity.GetType().ToString());
            entity.GetType().GetProperties().Where(pr => pr.CanRead && MapperHelper.IsAnId(pr) == false).ToList().ForEach(property =>
            {
                if (MapperHelper.IsPrimitive(property.PropertyType))
                {
                    node.AddProperty(property.Name, property.GetValue(entity, null).ToString());
                }
            });

            return(node);
        }
예제 #2
0
파일: NodeMapper.cs 프로젝트: khoadd/Neo4jD
        private void UpdateNode(Node nodeToUpdate, object entity)
        {
            string propVal = string.Empty;

            entity.GetType().GetProperties().Where(pr => pr.CanRead && MapperHelper.IsAnId(pr) == false).ToList().ForEach(property =>
            {
                if (MapperHelper.IsPrimitive(property.PropertyType))
                {
                    propVal = property.GetValue(entity, null).ToString();
                    if (nodeToUpdate.GetProperty(property.Name) != propVal)
                    {
                        nodeToUpdate.SetProperty(property.Name, propVal);
                    }
                }
            });
        }
예제 #3
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);
        }