Parent et objet enfant dans SimpleRepository
-
21-09-2019 - |
Question
Comment serait-il travailler dans SimpleReporitory de Subsonic si je voulais être en mesure d'avoir une relation 1 à plusieurs entre les objets?
Est-ce que je dois créer un objet pont, puis construire mon objet parent lors de l'exécution, ou est-ce support intégré?
Ce que je cherche est que vous avez choisi:
Exemple boutique Adam ...
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
les bits principaux:
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)
Je pense que cela devrait créer 3 tables:
Commerces
employés
ShopsToEmployees (ou d'une autre convention de nommage)
Mais je reçois seulement une table de canaux!
La solution
Je met à jour les choses SimpleRepo actuellement pour créer automatiquement des tables jointes basées sur des collections. Pas facile de déterminer plusieurs / plusieurs vs 1 / beaucoup - mais j'ai quelques idées.)
Autres conseils
Pour créer une relation un à plusieurs il vous suffit de créer le modèle d'objet, SubSonic devrait faire le reste pour vous par exemple.
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: Cela devrait générer deux tables lorsque vous exécutez une migration non 3. Les 3 trois tableaux que vous décrivez dans votre question représenterait une relation plusieurs à plusieurs. Aussi dans votre exemple, vous n'êtes pas enregistrer vos employés, SubSonic ne cascade sauve donc vous devrez enregistrer votre boutique puis ajoutez les employés à et BatchSave les employés.