Дозвуковой - может ли кто-нибудь привести пример использования Subsonic SimpleRepository для сохранения списка / массива объектов? - PullRequest
0 голосов
/ 23 октября 2009

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

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

Может кто-нибудь указать мне пример или сказать, как я мог бы использовать Subsonic для сопоставления следующих классов с базой данных?

Обратите внимание, что Я не спроектировал базу данных - Я надеюсь, что Subsonic сделает это для меня , ленивый дурак, что я ...

Редактировать: Просто для того, чтобы расширить предыдущий пункт - я надеюсь, что Subsonic преобразует мою объектную модель в реляционную БД, имеющую дело со всеми отношениями Родитель-Ребенок и Один-ко-многим, которые подразумеваются. В настоящее время я не думаю, что Subsonic может это сделать. Но даже рабочий пример (не фрагмент кода), который явно управляет внешними ключами и т. Д. В объектной модели, был бы полезен.

Некоторые предыстории и заметки о классах, которые я хочу сохранить:

  • они используются программным обеспечением, управляющим некоторым измерительным оборудованием
  • класс Data содержит массив RunData объектов, вызываемых RunFn , который содержит данные до 10 отдельных измерений
  • обратите внимание, что RunData также содержит массив поплавков - RawY
  • при необходимости мы можем изменить массивы на другой тип коллекции (List <> и т. Д.)
  • разработка в 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 ]

1 голос
/ 25 октября 2009

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

0 голосов
/ 28 октября 2009

Чтобы ответить на мой собственный вопрос ...

Несмотря на некоторые другие публикации, которые я обнаружил, из которых следует, что Subsonic SimpleRepository может автоматически генерировать реляционную схему из объектной модели, это оказывается НЕ . См. Ответ Роба Конери на этот вопрос:

отношения-и-отложенной загрузки-в-дозвуковой 3-0

Однако он работает над этим, и, вероятно, оно того стоит.

Тем временем я посмотрел на Свободный NHibernate , и это делает то, что я хочу прямо из коробки. Их исходный код загрузки имеет демонстрационный проект под названием examples.FirstProject, который демонстрирует функциональность, которую я ищу. Их документация, кажется, намного более зрелая.

Однако NHibernate также выглядит более сложным в целом, поэтому будет интересно посмотреть, что будет развиваться с Subsonic.

Редактировать: Вот полезная ссылка, которая показывает, как самостоятельно управлять внешними ключами в SimpleRepository -

subsonic-3-simplerepository

Сам не пробовал, но похоже, что это действительно сработает.

...