Вопрос по subsonic3, one-to-many, subsonic, parent-child, simplerepository – Дозвуковой - может ли кто-нибудь привести пример использования Subsonic SimpleRepository для сохранения списка / массива объектов?

0

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

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

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

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

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

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

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

Редактировать: ям с использованием Subsonic 3.0.0.3.I '

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   ответа
0

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

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

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

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

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

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

дозвуковой-3-simplerepository

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

@ Алекс - яУ нас был некоторый успех с Fluent NHibernate - поиск "Автоотображение» тег для некоторых из моих опытов. Функциональность Automapping в основном работает, создавая реляционную БД из объектной модели. Очень гибкий и мощный. С другой стороны, гораздо сложнее, чем Subsonic, и документации и рабочих примеров мало. Но я'Мы получили помощь от первоначальных авторов и продолжаем использовать ее в моем проекте. Насколько я могу сказать, этоЕдинственная игра в городе, если вы хотите по-настоящему автоматизировать довольно сложные объекты. Tom Bushell
SubSonic создаст модель вашей базы данных для вас, используя SimpleRepository, но вам нужно перенести каждую таблицу. То, о чем говорит этот вопрос, является глубоким спасением. Adam Cooper
@ Том - яИнтересно узнать, как Fluent NHibernate сработал для вас в этом сценарии? Я сталкиваюсь с точно такой же проблемой с SimpleRespository, поэтому думаю, что стоит посмотреть. Alex
@ Адам - я думаю, что более правильно сказать, что "SimpleRepository автоматически создаст и перенесетотдельные столы для вас, но вам нужно самим управлять отношениями в вашей объектной модели, Если я'м неправильно, пожалуйста, напишитеполный рабочий пример что кто-то может вставить в Visual Studio и иметь разумные шансы на его работу. Tom Bushell
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); }
  }
}
</rundatum></rundatum></rawyvalue></rawyvalue>

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

Исправление - хотел сказатьвключая некоторые вопросы, на которые вы ответили в предыдущем комментарии. Tom Bushell
+1 - Спасибо Адам - именно то, что я искал. Я'попробую на следующий день или около того, и отметлю ваш ответ как принятый, если всехорошо Tom Bushell
Кстати, множественное число, казалось, хорошо работало с моими оригинальными именами. Также я'м с использованием Subsonic 3.0.0.3, если это имеет значение. Tom Bushell
Вы'Нужно сказать SubSonic запустить миграцию, создав экземпляр SimpleRepository и передав SimpleRepositoryOptions.RunMigrations в конструктор. Вы смотрели на документы?subsonicproject.com/docs/Using_SimpleRepository Adam Cooper

Похожие вопросы