@Sneiksus

Возможно ли хранить List или двумерный массив в БД?

База MS SQL. Использую Entity Framework. Как можно сохранить туда массив или лист? Есть ли у SQL какой-то тип? Или можно сериализовать? Или нужна дополнительная таблица? Приводите примеры в коде, пожалуйста.
  • Вопрос задан
  • 1702 просмотра
Решения вопроса 1
@Ascar
Если просто положить массив или другой объект в поле, то сериализуйте:
table.arrayField = JsonConvert.SerializeObject(new string[] { "123", "qwe", "asd" });

//deserialize
var array = JsonConvert.DeserializeObject<string[]>(table.arrayField);
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
sergey-gornostaev
@sergey-gornostaev Куратор тега SQL
Седой и строгий
Возможно. Не использовал конкретно Entity Framework, но в других ORM и в целом реляционных БД, это реализуется отношениями: элементы списка хранятся как строки этой же или другой таблицы, имеющие поле внешнего ключа на строку, хранящую данные исходной сущности.
Ответ написан
Комментировать
@CHolfield
Сериализовать можно что угодно

using System.Text;
using System.Xml;
using System.Xml.Serialization;

private class Utf8StringWriter : StringWriter
    {
        public override Encoding Encoding { get { return Encoding.UTF8; } }
    }

var xs = new XmlSerializer(ObjectName.GetType());
                            var xml = new Utf8StringWriter();
                            xs.Serialize(xml, ObjectName);//xml.ToString() - тут строка содержимого в xml формате, оч удобно


И обратно
private static T Deserialize<T>(string xml)
    {
        var xs = new XmlSerializer(typeof(T));
        return (T)xs.Deserialize(new StringReader(xml));
    }

ObjectNameType ObjectName = Deserialize<ObjectNameType>(plaintext);//та самая строка xml содержимого на входе, объект нужного типа на выходе
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы