Neo4j c# водитель - PullRequest
       0

Neo4j c# водитель

0 голосов
/ 13 февраля 2020

Я работаю на своем c# веб-сервере и хочу использовать neo4j в качестве базы данных. У меня есть модели в c# коде, например, User:

public class User
    {
        public string Username { get; set; }
        public string Email { get; set; }
        public string Password { get; set; }
        public long? Id { get; set; }
        public long? Status { get; set; }
        public bool? Active { get; set; }
        public bool? Blocked { get; set; }
        public string RefreshToken { get; set; }
        public User() { }
    }

Мне нужен совет, как десериализовать IRecord, возвращенный функцией session.Run. У меня есть эта функция:

public List<T> Query<T>(string cypher, object data) where T: new() 
        {
            using (ISession session = this.Driver.Session(AccessMode.Write))
            {
                try
                {
                    IStatementResult result = session.Run(cypher, data);
                    List<T> res = new List<T>();
                    var type = typeof(T);
                    foreach (IRecord record in result)
                    {

                        T o = new T();
                        for (int i = 0; i < record.Keys.Count; i++)
                        {
                            try
                            {
                                var prop = type.GetProperty(record.Keys[i]);
                                if (prop != null) prop.SetValue(o, record.Values[record.Keys[i]]);
                            }
                            catch { }
                        }
                        res.Add(o);
                    }
                    return res;
                }
                catch(Exception e)
                {
                    Debug.WriteLine("Error occured: #1: "+e.Message);
                    return null;
                }
            }
        }

но я не уверен, что это хорошая производительность

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...