2009-09-04 112 views
4

如果我希望能夠在對象之間具有1對多關係,它將如何在Subsonic的SimpleReporitory中工作?SimpleRepository中的父對象和子對象

我必須創建一個橋接對象,然後在運行時構建我的父對象,還是內置此支持?

我所尋找的是如下因素:

亞當的示例店...

 
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(或其他一些命名約定)

但我只獲得一個Channels表!

+0

+1。好問題。我不能相信以前沒有人投票過。 – David 2009-10-08 13:23:58

回答

3

我正在更新SimpleRepo當前的東西,以自動創建基於集合的連接表。不容易確定很多/很多vs 1 /很多 - 但我有一些想法:)。

+0

神奇的搶劫:)我會等待新版本 – 2009-09-10 12:35:06

+0

我很想也看到這一點。 Fluent NHibernate是我現在知道的唯一選項,它可以做到這一點,(請參閱http://stackoverflow.com/questions/1610362/subsonic-can-anyone-provide-an-example-of-using-subsonic-to -persist-a-list-arra/1634084#1634084)但它看起來很複雜。亞音速的方法必然要簡單得多,基於我的(不可或缺的)經驗。 – 2009-10-28 14:14:34

+0

Rob,有沒有更新這個包的時間? – 2009-12-02 14:39:53

3

要創建一對多的關係,您只需創建對象模型,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.您在您的問題將是一個多對多的關係形容3個三個表。同樣在你的例子中,你沒有保存你的僱員,SubSonic不會級聯保存,所以你需要保存你的店鋪,然後添加僱員到它和BatchSave僱員。

+0

我相信你的例子如果是一對一的關係。我更新了一個一對多的示例對象模型的問題... – 2009-09-04 12:11:16

+0

如果我具有上述內容,我既不會獲取內容表格也不會保存任何數據。 – 2009-09-04 12:23:14

+0

對不起,我現在修正了示例中的錯字。 – 2009-09-04 12:41:42