Родительский и дочерний объект в SimpleRepository
-
21-09-2019 - |
Вопрос
Как бы это работало в 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 не сохраняет каскадно, поэтому вам нужно будет сохранить свой магазин, затем добавить в него сотрудников и выполнить пакетное сохранение сотрудников.