4

オブジェクト間に 1 対多の関係を持たせたい場合、Subsonic の SimpleReporitory ではどのように機能しますか?

ブリッジ オブジェクトを作成してから、実行時に親オブジェクトをビルドする必要がありますか? それとも、このサポートは組み込まれていますか?

私が探しているのは次のとおりです。

アダムのサンプルショップ...

パブリッククラスショップ

    整数としてのプライベート m_id
    プライベート m_Name As String
    プライベート m_Employees As List(Of Employee)

    Public Property Id() As Integer
        得る
            m_id を返す
        エンドゲット
        Set(ByVal 値を整数として)
            m_id = 値
        エンドセット
    End プロパティ

    Public Property Name() As String
        得る
            m_Name を返す
        エンドゲット
        Set(文字列としての ByVal 値)
            m_Name = 値
        エンドセット
    End プロパティ

    Public Property Employees() As List(Of Employee)
        得る
            m_Employees を返す
        エンドゲット
        Set(ByVal 値 As List(Of Employee))
            m_Employees = 値
        エンドセット
    End プロパティ

クラス終了

公務員クラス

    整数としてのプライベート m_id
    プライベート m_Name As String

    Public Property Id() As Integer
        得る
            m_id を返す
        エンドゲット
        Set(ByVal 値を整数として)
            m_id = 値
        エンドセット
    End プロパティ

    Public Property Name() As String
        得る
            m_Name を返す
        エンドゲット
        Set(文字列としての ByVal 値)
            m_Name = 値
        エンドセット
    End プロパティ

クラス終了

メインビット:

        Dim repo As New SimpleRepository("SubSonicObjectTest", SimpleRepositoryOptions.RunMigrations)

        Dim emplyee1 As New Employee
        emplyee1.Name = "マーティン"
        Dim emplyee2 As New Employee
        emplyee2.Name = "アダム"

        Dim shop As New Shop
        shop.Name = "サブソニックストア"

        shop.Employees = New List(Of Employee)
        shop.Employees.Add(emplyee1)
        shop.Employees.Add(emplyee2)

        repo.Add(Of Shop)(shop)

これにより、3つのテーブルが作成されるはずです。

Shops
Employees
ShopsToEmployees (またはその他の命名規則)

しかし、Channels テーブルしか取得できません。

4

2 に答える 2

3

コレクションに基づいて結合されたテーブルを自動的に作成するために、現在 SimpleRepo のものを更新しています。多/多 vs 1/多を判断するのは簡単ではありませんが、いくつかのアイデアがあります:)。

于 2009-09-09T05:52:56.357 に答える
3

1 対多の関係を作成するには、オブジェクト モデルを作成するだけで済みます。残りは 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 ではなく移行を実行すると、これにより 2 つのテーブルが生成されます。質問で説明する 3 つの 3 つのテーブルは、多対多の関係を表します。また、あなたの例では、従業員を保存していません.SubSonicは保存をカスケードしないため、ショップを保存してから従業員を追加し、従業員をバッチ保存する必要があります.

于 2009-09-04T10:51:20.437 に答える