Как сопоставить столбцы в табличной базе данных со свойствами и связью с полями

#sensenet

#sensenet

Вопрос:

Я изучаю фреймворк Sensenet и успешно установил его на свой компьютер, и теперь я разрабатываю наш веб-сайт на основе этого фреймворка.
Я прочитал документы на wiki и понял взаимосвязь между базой данных <-> Свойства <-> Поля <-> Просмотр (вы можете увидеть изображение по этой ссылке:http://wiki.sensenet.com/Field_-_for_Developers ).
Предположим, если я добавил новую таблицу в базу данных Sensenet и решил отобразить все данные внутри этой таблицы на нашей странице, но я не знаю, как реализовать поток разработки по этой модели: База данных <=> Свойство <=> Поле <=> Просмотр. ?
можете ли вы показать шаги, чтобы помочь мне?

Комментарии:

1. Вы уверены, что хотите использовать пользовательские таблицы и столбцы? Это потребовало бы больше кодирования, чем просто перенос данных в хранилище содержимого в SenseNet. Это лучшее решение в 99,99% случаев :). Вы можете импортировать данные в репозиторий SN с помощью нескольких строк кода (дайте мне знать, если вам нужен пример), тогда у вас будут все преимущества (например, поиск и разрешения).

2. Существует лишь несколько исключительных случаев, когда имеет смысл сохранить пользовательские таблицы — например, когда другое приложение все еще хочет добавлять или читать записи там — но даже тогда есть лучшие решения (например, синхронизация вместо прямого использования одних и тех же таблиц). Не могли бы вы, пожалуйста, добавить несколько примеров или подробностей о том, почему вы планируете иметь пользовательские таблицы?

3. Когда вы говорите «таблица», вы имеете в виду пользовательскую таблицу SQL или пользовательский контент Sensenet?

Ответ №1:

Пожалуйста, рассмотрите возможность хранения ваших данных в хранилище содержимого SenseNet вместо хранения пользовательских таблиц в базе данных. Намного проще работать с обычными элементами содержимого, и у вас будут все возможности, предлагаемые репозиторием, например, индексация, разрешения и, конечно, существующий пользовательский интерфейс. Для этого вам нужно будет выполнить следующие шаги:

  1. Определите типы содержимого в SenseNet для каждого типа объекта, который у вас есть в существующей базе данных (в примере ниже это тип Car).
  2. Создайте контейнер в репозитории содержимого, куда вы хотите поместить свой контент (в данном случае это пользовательский список Cars на сайте по умолчанию).
  3. Создайте инструмент командной строки, используя клиентскую библиотеку SenseNet, для переноса существующих данных в хранилище содержимого.

Чтобы увидеть пример в деталях, пожалуйста, ознакомьтесь с этой статьей:

Суть примера на самом деле состоит из нескольких строк кода, который фактически сохраняет элементы содержимого в хранилище содержимого (через REST API):

 using (var conn = new SqlConnection(ConnectionString))
{
    await conn.OpenAsync();

    using (var command = new SqlCommand("SELECT * FROM Cars", conn))
    {
        using (var reader = await command.ExecuteReaderAsync())
        {
            while (await reader.ReadAsync())
            {
                var id = reader.GetInt32(0);
                var make = reader.GetString(1);
                var model = reader.GetString(2);
                var price = reader.GetInt32(3);

                // Build a new content in memory and fill custom metadata fields. No need to create
                // strongly typed objects here as the client Content is a dynamic type.
                // Parent path is a Content Repository path, e.g. "/Root/Sites/Default_Site/Cars"
                dynamic car = Content.CreateNew(ParentPath, "Car", "Car-"   id);
                car.Make = make;
                car.Model = model;
                car.Price = price;

                // save it through the HTTP REST API
                await car.SaveAsync();

                Console.WriteLine("Car-"   id   " saved.");
            }
        }
    }
}