0

BLToolkitを使用して、親子関係にあるテーブルのセットにいくつかの新しいレコードを追加したいと思います。残念ながら、コミット後、データベースには親行しかないため、何が欠けているのかわかりません。

Parents-Listに追加する前にParent-Objectを検査すると、期待どおりにChild-Objectが含まれています。SQLQuery-Bitに何かが欠けていることは確かですが、何がわからないのです。

これが私が設定したものです。

  • テーブルを作成するためのSQLコード
    CREATE TABLE [dbo].[PARENTS](
        [ID] [int] IDENTITY(1,1) NOT NULL,
        [SOME_VALUE] [int] NOT NULL,
        CONSTRAINT [PK_PARENT] PRIMARY KEY CLUSTERED 
        (
            [ID] ASC
        )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
    ) ON [PRIMARY]

    CREATE TABLE [dbo].[CHILDS](
        [ID] [int] IDENTITY(1,1) NOT NULL,
        [PARENT_ID] [int] NOT NULL,
        [SOME_TEXT] [nvarchar](50) NOT NULL,
        CONSTRAINT [PK_CHILD] PRIMARY KEY CLUSTERED 
        (
            [ID] ASC
        )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
    ) ON [PRIMARY]

    GO

    ALTER TABLE [dbo].[CHILDS]  WITH CHECK ADD  CONSTRAINT [FK_CHILD_PARENT] FOREIGN KEY([PARENT_ID])
    REFERENCES [dbo].[PARENTS] ([ID])
    GO

    ALTER TABLE [dbo].[CHILDS] CHECK CONSTRAINT [FK_CHILD_PARENT]
  • クラス
[TableName("PARENTS")]
public class Parent
{
    public Parent()
    {
        Children = new List<Child>();
    }

    [MapField("ID"), PrimaryKey, NonUpdatable]
    public int Id;

    [MapField("SOME_VALUE")]
    public int SomeValue;

    [Association(ThisKey = "ID", OtherKey = "PARENT_ID", CanBeNull = false)]
    public List<Child> Children;
}

[TableName("CHILDS")]
public class Child
{
    [MapField("ID"), PrimaryKey, NonUpdatable]
    public int Id;

    [MapField("SOME_TEXT")]
    public string SomeText;

    [Association(ThisKey = "PARENT_ID", OtherKey = "ID", CanBeNull = false)]
    public Parent Parent;
}
  • 行を挿入するコード
using (DbManager db = new DbManager())
{
    db.BeginTransaction();
    SqlQuery<Parent> query = new SqlQuery<Parent>();

    IList<Parent> parents = new List<Parent>();
    for (int i = 0; i < 10; i++)
    {
        Parent parent = new Parent();
        parent.SomeValue = i;

        Child child = new Child();
        child.SomeText = i.ToString();

        parent.Children.Add(child);
        parents.Add(parent);
    }
    query.Insert(db, 10, parents);
    db.CommitTransaction();
}
4

1 に答える 1