4

Subsonic3 で SimpleRepository 機能を使おうとしています - まず第一に、RobC に大いに感謝しなければなりません - Subsonic は本当に素晴らしいので、SimpleRepository への追加の更新を見るのが待ちきれません. 私は移行アプローチの大ファンです (DB から始めるのではなく、開発者/クラス主導)。

ここの投稿を見てきました: SimpleRepository の親と子のオブジェクトです が、まだ少し混乱しています。

これらのクラスを定義した場合:

public class Permit {

        public int PermitID {get; set;}
        public string Number { get; set; }
        public DateTime? DateIssued { get; set; }
        public Product product { get; set; }
    }

    public class Product
    {
        public int ProductID { get; set; }
        public string Value { get; set; }

    }

次に、許可証のデータを保存したいのですが、どうすればよいですか? Permit クラスで ProductID を定義してから、プログラムでそれらをリンクする必要がありますか? または、以下のコードは機能するはずですか?

 var repo = new SimpleRepository("ECPermit", SimpleRepositoryOptions.RunMigrations);
            var permit = new Permit();
            var product = new Product();

            permit.Number = "apermit";
            permit.DateAdded = DateTime.Now;

            product.Value = "this is a product";
            repo.Add(permit);
            permit.product = product;
            repo.Add(product);

これにより、許可と製品のテーブルが作成されますが、それらの間にリンクはありません。私は何を間違っていますか?ありがとう

4

1 に答える 1

1

ここで注意する必要があるのは、外部のキー値を入力することによって関係が作成されるということです。したがって、この例で行っているのは、許可を作成して保存し、許可の ProductID を設定して (ただし、この情報を保存しないで)、製品を保存することです。次のようにコードを並べ替えると、ProductID が正しく設定されます。

 var repo = new SimpleRepository("ECPermit", SimpleRepositoryOptions.RunMigrations);
 var permit = new Permit();
 var product = new Product();

 product.Value = "this is a product";
 repo.Add(product);

 permit.Number = "apermit";
 permit.DateAdded = DateTime.Now;    
 permit.ProductId = product.Id;
 repo.Add(permit);
于 2009-09-17T11:18:11.690 に答える