Objeto de pai e filho no FleleRePository
-
21-09-2019 - |
Pergunta
Como funcionaria no FleleReporomy da subsônica se eu quisesse ter um 1 a muitos relacionamentos entre objetos?
Eu teria que criar um objeto Bridge e, em seguida, criar meu objeto pai em tempo de execução, ou esse suporte é incorporado?
O que estou procurando é o seguinte:
Exemplo de Adam Shop ...
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
Bits principais:
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)
Eu acho que isso deve criar 3 tabelas:
Lojas
Funcionários
ShopSoemployees (ou alguma outra convenção de nomenclatura)
Mas eu só recebo uma tabela de canais!
Solução
Atualmente, estou atualizando as coisas do FleleRepo para criar tabelas unidas automaticamente com base nas coleções. Não é fácil determinar muitos/muitos vs 1/muitos - mas tenho algumas idéias :).
Outras dicas
Para criar um para muitos relacionamentos que você só precisa criar o modelo de objeto, o subsônico deve fazer o resto para você, por exemplo,
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; }
}
EDIT: Isso deve gerar duas tabelas quando você executar uma migração e não 3. As três mesas que você descreve em sua pergunta representaria muitos para muitos relacionamentos. Além disso, no seu exemplo, você não está salvando seus funcionários, o Subsonic não faz defesas em cascata; portanto, você precisará salvar sua loja e adicionar os funcionários a ele e o lote dos funcionários.