私はEF CTP5 POCOを試していて、EF4 EntityModelからPOCOコードのみのアプローチに変換しようとしています。CTP5 POCOコードのみ、DBにマスターディテールレコードを追加する方法
internal class InvoiceContext : DbContext
{
public DbSet<Invoice> Invoices {get; set;}
public DbSet<InvoiceLine> InvoiceLines {get; set;}
}
public class Invoice
{
public Guid InvoiceId { get; set; }
public virtual ICollection<InvoiceLine> Lines { get; set; }
}
public class InvoiceLine
{
public Guid InvoiceLineId { get; set; }
public Guid InvoiceId { get; set; }
public virtual Invoice Header { get; set; }
}
はので、私は新しい請求書との行を追加することになっています、EF4モデルからPOCOに私の古いコードを変換します。私はマスタークラスを作成し、マスタークラス自体のインスタンスに詳細を追加していました。
var inv = new Invoice();
inv.InvoiceId = Guid.NewGuid();
var db = new InvoiceContext();
db.Invoices.Add(inv);
var invLine = new InvoiceLine();
invLine = InvoiceLineId = Guid.NewGuid();
inv.Lines.Add(invLine);
inv.Lines < ==この時点でnullであるので、私は私がInvoiceLinesのコレクションを作成し、それを設定することになって、またはいくつかがあるのです 請求書自体のインスタンスに行を追加することはできませんこれを行う他の方法。
要するに、POCOコードのみ(CTP5)を使用して、マスター/ディテール行をデータベースに追加する方法を要約します。あなたはその後、請求書オブジェクトを追加することを好む場合
using (var db = new Ctp5Context())
{
var inv = new Invoice()
{
InvoiceId = Guid.NewGuid()
};
var invLine = new InvoiceLine()
{
InvoiceLineId = Guid.NewGuid(),
Header = inv
};
db.InvoiceLines.Add(invLine);
db.SaveChanges();
}
:ここ
私はそれを行うことができますが、私はそれを使用しようとしている方法については、それは不可能ですか?これはCTP5とPOCOコードのみのアプローチでこのようなシナリオを処理する方法ですか? – hazimdikenli
私はリストを渡してみると、あなたの助けを借りて、それが動作するかどうかを確認します。 – hazimdikenli
allright、リストを作成してアイテムを追加すると、子レコードがdbに保存されます。 – hazimdikenli