4

如果我希望能够在对象之间建立一对多的关系,它将如何在 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(或其他命名约定)

但我只得到一个频道表!

4

2 回答 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; }
}

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

于 2009-09-04T10:51:20.437 回答
3

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

于 2009-09-09T05:52:56.357 回答