SimpleRepository 中的父对象和子对象

Posted

技术标签:

【中文标题】SimpleRepository 中的父对象和子对象【英文标题】:Parent and Child object in SimpleRepository 【发布时间】:2009-09-04 09:54:59 【问题描述】:

如果我希望能够在对象之间建立一对多的关系,它将如何在 Subsonic 的 SimpleRepository 中工作?

我是否必须创建一个桥对象,然后在运行时构建我的父对象,还是内置此支持?

我正在寻找的是以下内容:

亚当的示例商店...

公共课商店 私有 m_id 作为整数 私有 m_Name 作为字符串 私人 m_Employees 作为列表(员工) 公共属性 Id() 作为整数 得到 返回 m_id 结束获取 设置(ByVal 值作为整数) m_id = 值 结束集 结束属性 公共属性名称()作为字符串 得到 返回 m_Name 结束获取 设置(ByVal 值作为字符串) m_Name = 值 结束集 结束属性 公共财产雇员()作为名单(雇员) 得到 返回 m_Employees 结束获取 设置(ByVal 值作为列表(员工)) m_Employees = 价值 结束集 结束属性 结束类 公职人员 私有 m_id 作为整数 私有 m_Name 作为字符串 公共属性 Id() 作为整数 得到 返回 m_id 结束获取 设置(ByVal 值作为整数) m_id = 值 结束集 结束属性 公共属性名称()作为字符串 得到 返回 m_Name 结束获取 设置(ByVal 值作为字符串) m_Name = 值 结束集 结束属性 结束类

主要位:

Dim repo 作为新的 SimpleRepository("SubSonicObjectTest", SimpleRepositoryOptions.RunMigrations) Dim emplyee1 作为新员工 emplyee1.Name = "马丁" 将emplyee2 调暗为新员工 emplyee2.Name = "亚当" 点心店作为新店 shop.Name = "亚音速商店" shop.Employees = 新列表(员工) shop.Employees.Add(emplyee1) shop.Employees.Add(emplyee2) repo.Add(Of Shop)(shop)

我认为这应该创建 3 个表:

商店 员工 ShopsToEmployees(或其他命名约定)

但我只得到一个频道表!

【问题讨论】:

+1。好问题。我不敢相信以前没有人投票赞成。 【参考方案1】:

我目前正在更新 SimpleRepo 的东西,以根据集合自动创建连接表。很难确定多/多与 1/多 - 但我有一些想法:)。

【讨论】:

Fantastic Rob :) 我等新版本 我也很想看到这个。 Fluent NHibernate 是我现在知道的唯一选择,(请参阅***.com/questions/1610362/…)但它看起来很复杂。根据我(诚然有限)的经验,亚音速方法肯定会简单得多。 我仍然是唯一一个在工作的人——这里很寂寞。所以不 - 不知道什么时候。 Rob,这个功能是否在我可以尝试的分支或分支中?【参考方案2】:

要创建一对多关系,您只需创建对象模型,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 不会级联保存,因此您需要保存您的商店,然后将员工添加到其中并批量保存员工。

【讨论】:

我相信你的例子是一对一的关系。我已经用一对多的示例对象模型更新了我的问题... 对不起,我的示例中的错字,现在已修复。 另外,我认为您在 Content 类中需要的不仅仅是一个 Id,请尝试向其中添加另一个属性 对不起亚当,在测试中我发现了 :).. 我仍然没有得到内容表 :( 你没有拯救你的员工,这可能意味着 SubSonic 永远不会为那个表运行迁移,我也在我的答案中添加了更多信息。

以上是关于SimpleRepository 中的父对象和子对象的主要内容,如果未能解决你的问题,请参考以下文章

什么是数据库中的父表和子表?

如何显示多个表中的父记录和子记录

Spring-Data 中的父对象不获取子对象

如何在Linux上的c中的父进程和子进程之间进行乒乓球

SimpleRepository 的生命周期管理

Vue 的父组件和子组件生命周期钩子执行顺序