SimpleRepository中的父对象和子对象

4
如果我想在Subsonic的SimpleRepository中使对象之间存在1对多的关系,该怎么做呢?
我需要创建一个桥接对象,然后在运行时构建我的父对象吗?还是这种支持已经内置了?
我正在寻找以下内容:
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
主要部分:
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个表:
Shops Employees ShopsToEmployees(或其他命名约定)
但是我只得到一个Channels表!

+1。好问题。我不敢相信之前没有人投票支持它。 - David
2个回答

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; }
}

编辑:运行迁移时,这应该会生成两个表而不是三个。你在问题中描述的三个表将表示多对多关系。此外,在您的示例中,您没有保存您的员工,SubSonic不会级联保存,因此您需要保存您的商店,然后将员工添加到其中并批量保存员工。


我认为你的例子是一对一的关系。我已经更新了我的问题,并提供了一个一对多的样例对象模型... - MrHinsh - Martin Hinshelwood
抱歉,我的示例中有错别字,现已修正。 - Adam Cooper
另外,我认为你的Content类不仅需要一个单独的Id,还需要添加另一个属性。 - Adam Cooper
抱歉,亚当,经过测试我已经弄清楚了 :).. 我仍然没有得到一个内容表 :( - MrHinsh - Martin Hinshelwood
你没有保存你的员工,这很可能意味着SubSonic从未对该表运行迁移,我也在我的答案中添加了一些更多信息。 - Adam Cooper
那就是我在等待的答案,Adam,谢谢...我希望它会级联...但这不是致命问题 :) - MrHinsh - Martin Hinshelwood

3

我目前正在更新SimpleRepo相关内容,以便根据集合自动创建连接表。很难确定多对多还是一对多 - 但我有一些想法 :)


太棒了 Rob :) 我会等待新版本。 - MrHinsh - Martin Hinshelwood
我也很想看到这一点。目前我所知道的唯一选项是Fluent NHibernate(请参见http://stackoverflow.com/questions/1610362/subsonic-can-anyone-provide-an-example-of-using-subsonic-to-persist-a-list-arra/1634084#1634084),但它看起来很复杂。基于我的(尽管有限)经验,Subsonic方法肯定会简单得多。 - Tom Bushell
我仍然是唯一在这上面工作的人 - 这里很孤独。所以不知道 - 什么时候能完成还不确定。 - user1151
Rob,这个特性是在一个分叉或者分支中吗?我可以试一下吗? - kay.one

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接