0

Я ищу возможные способы сохранения следующих классов. Subsonic SimpleRepository похоже, что он может работать, и люди сказали, что должны, когда я спросил more general question.Subsonic - может ли кто-нибудь предоставить пример использования Subsonic SimpleRepository для сохранения списка/массива объектов?

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

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

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

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

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

  • они используются программным обеспечением, которое управляет некоторым измерительным оборудованием
  • данных класса содержат массив Rundata объектов под названием RunFn, в котором хранятся данные до 10 отдельных прогонов измерений
  • Обратите внимание, что Rundata также содержит массив поплавков - Rawy
  • в случае необходимости, мы можем изменить массивы в какой-то другой тип коллекции (List <> и т.д.)
  • развивается в C#, VS2008, для SQL Server Экспресс

Редактировать: Я использую 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; 
     } 
    } 
} 

ответ

0

Для того, чтобы ответить на мой собственный вопрос ...

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

relationships-and-lazy-loading-in-subsonic-3-0

Он работает над этим, однако, и это, вероятно, будет хорошо стоит подождать.

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

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

Edit: Heres полезная ссылка, которая показывает, как mangage внешние ключи сами в SimpleRepository -

subsonic-3-simplerepository

не пробовал сам, но похоже, что это будет на самом деле работает.

+0

SubSonic создаст вашу модель базы данных для вас, используя SimpleRepository, но вам нужно перенести каждую таблицу. Речь идет о глубокой экономии. –

+0

@Adam - Я думаю, что правильнее сказать, что «SimpleRepository будет автоматически создавать и переносить _индивидуальные таблицы_ для вас, но вам нужно управлять отношениями самостоятельно в своей объектной модели». Если я ошибаюсь, отправьте рабочий экземпляр _complete, который можно вставить в Visual Studio и иметь разумные шансы на его работу. –

+0

@Tom - Мне было бы интересно узнать, как Fluent NHibernate разработал для вас этот сценарий? Я столкнулся с той же проблемой с SimpleRespository, поэтому думаю, что это стоит посмотреть. – Alex

1

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

+1 - Спасибо Адаму - именно то, что я искал. Я попробую его на следующий день или около того, и пометьте свой ответ как принятый, если все в порядке. –

+0

Я пробовал это, и Subsonic создал таблицу для класса Data, но просто проигнорировал список RunData. Затем я модифицировал класс Data, чтобы иметь одно свойство RunDatum, но это тоже не сработало. Единственное, что до сих пор работало, это сделать «repository.Add (RunDatum)», который создал другую таблицу без отношения к первой таблице. Я надеялся, что Subsonic будет перемещаться по всей иерархии классов и построить схему базы данных. –

+0

Кстати, плюрализация, казалось, отлично работала с моими оригинальными именами. Кроме того, я использую Subsonic 3.0.0.3, если это имеет значение. –