Родительский и дочерний объект в SimpleRepository

Как бы это работало в SimpleReporitory Subsonic, если бы я хотел иметь возможность связи между объектами 1: 1?

Должен ли я создать объект-мост и затем построить родительский объект во время выполнения, или эта поддержка встроена?

Что я ищу, так это следующее:

Пример магазина Адама...

Public Class Shop

    Private m_id As Integer
    Приватный m_Name As String
    Private m_Employees As List (Сотрудник)

    Public Property Id () как целое число
        Получить
            Возврат m_id
        Конец получить
        Установить (значение ByVal как целое число)
            m_id = значение
        Конец набора
    Конечная недвижимость

    Имя публичного свойства () As String
        Получить
            Возврат m_Name
        Конец получить
        Set (значение ByVal As String)
            m_Name = значение
        Конец набора
    Конечная недвижимость

    Государственная собственность Сотрудники () в виде списка (сотрудника)
        Получить
            Вернуться m_Employees
        Конец получить
        Set (значение ByVal как список (Of Employee))
            m_Employees = значение
        Конец набора
    Конечная недвижимость

Конечный класс

Сотрудник общественного класса

    Private m_id As Integer
    Приватный m_Name As String

    Public Property Id () как целое число
        Получить
            Возврат m_id
        Конец получить
        Установить (значение ByVal как целое число)
            m_id = значение
        Конец набора
    Конечная недвижимость

    Имя публичного свойства () As String
        Получить
            Возврат m_Name
        Конец получить
        Set (значение ByVal As String)
            m_Name = значение
        Конец набора
    Конечная недвижимость

Конечный класс 

Основные биты:

        Дим репо как новый SimpleRepository ("SubSonicObjectTest", SimpleRepositoryOptions.RunMigrations)

        Dim emplyee1 как новый сотрудник
        emplyee1.Name = "Мартин"
        Dim emplyee2 как новый сотрудник
        emplyee2.Name = "Адам"

        Тусклый магазин As New Shop
        shop.Name = "Sub Sonic Store"

        shop.Employees = Новый список (сотрудника)
        shop.Employees.Add (emplyee1)
        shop.Employees.Add (emplyee2)

        repo.Add (Of Shop) (магазин)

Я думаю, что это должно создать 3 таблицы:

Магазины
Сотрудники
ShopsToEmployees (или другое соглашение об именах)

Но я получаю только таблицу каналов!

2 ответа

Решение

В настоящее время я обновляю материал SimpleRepo, чтобы автоматически создавать объединенные таблицы на основе коллекций. Не легко определить много / много против 1/ много - но у меня есть некоторые идеи:).

Чтобы создать отношение один ко многим, вам просто нужно создать объектную модель, SubSonic должна сделать все остальное за вас, например

public class Shop
{
  public int Id { get; set; }
  public String Name { get; set; }
  public List<Employee> Employees { get; set; }
}

public class Employee
{
  public int Id { get; set; }
  public String Name { get; set; }
}

РЕДАКТИРОВАТЬ: Это должно генерировать две таблицы, когда вы запускаете миграцию не 3. Три таблицы, которые вы описываете в своем вопросе, будут представлять отношения многие ко многим. Кроме того, в вашем примере вы не сохраняете своих сотрудников, SubSonic не осуществляет каскадное сохранение, поэтому вам нужно сохранить ваш магазин, затем добавить в него сотрудников и выполнить пакетное сохранение сотрудников.

Другие вопросы по тегам