2009-09-04 104 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