Вопрос

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

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

Я ищу следующее:

Магазин примеров Адама...

Public Class Shop

    Private m_id As Integer
    Private m_Name As String
    Private m_Employees As List(Of Employee)

    Public Property Id() As Integer
        Get
            Return m_id
        End Get
        Set(ByVal value As Integer)
            m_id = value
        End Set
    End Property

    Public Property Name() As String
        Get
            Return m_Name
        End Get
        Set(ByVal value As String)
            m_Name = value
        End Set
    End Property

    Public Property Employees() As List(Of Employee)
        Get
            Return m_Employees
        End Get
        Set(ByVal value As List(Of Employee))
            m_Employees = value
        End Set
    End Property

End Class

Public Class Employee

    Private m_id As Integer
    Private m_Name As String

    Public Property Id() As Integer
        Get
            Return m_id
        End Get
        Set(ByVal value As Integer)
            m_id = value
        End Set
    End Property

    Public Property Name() As String
        Get
            Return m_Name
        End Get
        Set(ByVal value As String)
            m_Name = value
        End Set
    End Property

End Class

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

        Dim repo As New SimpleRepository("SubSonicObjectTest", SimpleRepositoryOptions.RunMigrations)

        Dim emplyee1 As New Employee
        emplyee1.Name = "Martin"
        Dim emplyee2 As New Employee
        emplyee2.Name = "Adam"

        Dim shop As New Shop
        shop.Name = "Sub Sonic Store"

        shop.Employees = New List(Of Employee)
        shop.Employees.Add(emplyee1)
        shop.Employees.Add(emplyee2)

        repo.Add(Of Shop)(shop)

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

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

Но у меня есть только таблица каналов!

Это было полезно?

Решение

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

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