#sensenet
#sensenet
Вопрос:
Я изучаю фреймворк Sensenet и успешно установил его на свой компьютер, и теперь я разрабатываю наш веб-сайт на основе этого фреймворка.
Я прочитал документы на wiki и понял взаимосвязь между базой данных <-> Свойства <-> Поля <-> Просмотр (вы можете увидеть изображение по этой ссылке:http://wiki.sensenet.com/Field_-_for_Developers ).
Предположим, если я добавил новую таблицу в базу данных Sensenet и решил отобразить все данные внутри этой таблицы на нашей странице, но я не знаю, как реализовать поток разработки по этой модели: База данных <=> Свойство <=> Поле <=> Просмотр. ?
можете ли вы показать шаги, чтобы помочь мне?
Комментарии:
1. Вы уверены, что хотите использовать пользовательские таблицы и столбцы? Это потребовало бы больше кодирования, чем просто перенос данных в хранилище содержимого в SenseNet. Это лучшее решение в 99,99% случаев :). Вы можете импортировать данные в репозиторий SN с помощью нескольких строк кода (дайте мне знать, если вам нужен пример), тогда у вас будут все преимущества (например, поиск и разрешения).
2. Существует лишь несколько исключительных случаев, когда имеет смысл сохранить пользовательские таблицы — например, когда другое приложение все еще хочет добавлять или читать записи там — но даже тогда есть лучшие решения (например, синхронизация вместо прямого использования одних и тех же таблиц). Не могли бы вы, пожалуйста, добавить несколько примеров или подробностей о том, почему вы планируете иметь пользовательские таблицы?
3. Когда вы говорите «таблица», вы имеете в виду пользовательскую таблицу SQL или пользовательский контент Sensenet?
Ответ №1:
Пожалуйста, рассмотрите возможность хранения ваших данных в хранилище содержимого SenseNet вместо хранения пользовательских таблиц в базе данных. Намного проще работать с обычными элементами содержимого, и у вас будут все возможности, предлагаемые репозиторием, например, индексация, разрешения и, конечно, существующий пользовательский интерфейс. Для этого вам нужно будет выполнить следующие шаги:
- Определите типы содержимого в SenseNet для каждого типа объекта, который у вас есть в существующей базе данных (в примере ниже это тип Car).
- Создайте контейнер в репозитории содержимого, куда вы хотите поместить свой контент (в данном случае это пользовательский список Cars на сайте по умолчанию).
- Создайте инструмент командной строки, используя клиентскую библиотеку 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.");
}
}
}
}