Subsonic - кто-нибудь может привести пример использования Subsonic SimpleRepository для сохранения списка / массива объектов?
-
05-07-2019 - |
Вопрос
Я ищу возможные способы сохранения следующих классов.Дозвуковой Простое хранилище похоже, это может сработать, и люди сказали, что так и должно быть, когда я спросил более общий вопрос.
Но я не смог найти ни одного примера того, как это сделать - или, по крайней мере, такого, который я мог бы понять.
Кто-нибудь может указать мне на пример или сказать, как я мог бы использовать Subsonic для сопоставления следующих классов с базой данных?
Обратите внимание , что Я еще не создавал базу данных - Я надеюсь, что Subsonic сделает это за меня, ленивый ублюдок, которым я являюсь...
Редактировать: Просто чтобы развить предыдущий пункт - я надеюсь, что Subsonic преобразует мою объектную модель в реляционную базу данных, имея дело со всеми подразумеваемыми отношениями "Родитель-потомок" и "Один ко многим".В настоящее время я не думаю, что дозвуковой может это сделать.Но даже такой рабочий пример (не фрагмент кода), который явно управлял бы внешними ключами и т.д. В объектной модели, был бы полезен.
Некоторая справочная информация и заметки о классах, которые я хочу сохранить:
- они используются программным обеспечением, которое управляет некоторым измерительным оборудованием
- в Данные класс содержит массив Исходные данные объекты , называемые РанФн, в котором хранятся данные до 10 отдельных циклов измерения
- обратите внимание , что Исходные данные также содержит массив с плавающими значениями - Сырой
- при необходимости мы можем изменить массивы на какой-либо другой тип коллекции (список<>, и т.д.)
- разработка на C #, VS2008, для SQL Server Express
Редактировать: Я использую Subsonic 3.0.0.3.
public class RunData
{
public DateTime StartDateTime { get; set; }
public TimeSpan ElapsedTime { get; set; }
private float[] _rawY;
public float[] RawY
{
get
{
return _rawY;
}
set
{
_rawY = value;
}
}
}
public Data
{
public string OperatorId { get; set; }
public string SampleId { get; set; }
// CAN SUBSONIC DEAL WITH THIS ARRAY OF OBJECTS???
private RunData[] _runFn;
public RunData[] RunFn
{
get
{
return _runFn;
}
set
{
_runFn = value;
}
}
}
Решение 2
Чтобы ответить на мой собственный вопрос...
Несмотря на некоторые другие публикации, которые я обнаружил, которые подразумевают, что Subsonic SimpleRepository может автоматически генерировать реляционную схему из объектной модели, оказывается, это НЕ так.Смотрите ответ Роба Конери на этот вопрос:
взаимосвязи-и-отложенная-загрузка-в-дозвуковом режиме-3-0
Однако он работает над этим, и, вероятно, ожидание того стоит.
Тем временем я просмотрел Свободно владеет NHibernate, и это делает то, что я хочу, прямо из коробки.Загруженный ими исходный код содержит демонстрационный проект под названием Examples.FirstProject, который демонстрирует функциональность, которую я ищу.Их документация также кажется гораздо более зрелой.
Однако NHibernate также выглядит более сложным в целом, поэтому будет интересно посмотреть, что будет развиваться с Subsonic.
Редактировать: Вот полезная ссылка, которая показывает, как самостоятельно управлять внешними ключами в SimpleRepository -
дозвуковой-3-простое хранилище
Сам не пробовал, но, похоже, это действительно сработает.
Другие советы
Я не уверен, что собираюсь ответить на все, что вы здесь спрашиваете, но если бы я реализовывал это с помощью SimpleRepository, у меня были бы следующие модели:
public class RawYValue
{
public int Id { get; set; }
public int RunDatumId { get; set; }
public float YValue { get; set; }
}
public class RunDatum
{
var repo = new SimpleRepository();
public int Id { get; set; }
public int DataId { get; set; }
public DateTime StartDateTime { get; set; }
public TimeSpan ElapsedTime { get; set; }
public IQueryable<RawYValue> RawYValues
{
get { return repo.Find<RawYValue>(rawYValue => rawYValue.RunDatumId == Id); }
}
}
public Data
{
var repo = new SimpleRepository();
public int Id { get; set; }
public string OperatorId { get; set; }
public string SampleId { get; set; }
// CAN SUBSONIC DEAL WITH THIS ARRAY OF OBJECTS???
public IQueryable<RunDatum> RunData
{
get { return repo.Find<RunDatum>(runDatum => runDatum.DataId == Id); }
}
}
Я предполагаю, что у SubSonic возникнут проблемы с множественным числом некоторых имен, поэтому вам, возможно, придется их изменить, но, надеюсь, это поможет вам начать.