Subsonic - кто-нибудь может привести пример использования Subsonic SimpleRepository для сохранения списка / массива объектов?

StackOverflow https://stackoverflow.com/questions/1610362

Вопрос

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

Но я не смог найти ни одного примера того, как это сделать - или, по крайней мере, такого, который я мог бы понять.

Кто-нибудь может указать мне на пример или сказать, как я мог бы использовать 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 возникнут проблемы с множественным числом некоторых имен, поэтому вам, возможно, придется их изменить, но, надеюсь, это поможет вам начать.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top