一個簡單的方法來做到這一點是使用附帶EF新代碼處女作4.1
你可以創建你的「實體」,例如:
public class ProductHeader
{
public int ID {get; set;}
public virtual ICollection<ProductDetail> ProductDetails {get; set;}
//Other properties
}
public class ProductDetail
{
public int ID {get; set;}
public virtual ICollection<ProductAttachment> ProductAttachments {get; set;}
//Other properties
}
public class ProductAttachment
{
public int ID {get; set;}
// you can have a navigation property here for the user, this allows you to access his name
public virtual User User {get; set;}
//Other properties
}
public class MyContext:DbContext
{
public DbSet<ProductHeader> ProductHeaders {get; set;}
public DbSet<ProductDetail> ProductDetails {get; set;}
public DbSet<ProductAttachment> ProductAttachment {get; set;}
}
爲插入順序,只需添加ProductHeader(在添加ProductDetails和ProductAttachments之後),EF將負責處理它。
編輯:這裏 是一個示例代碼添加ProductHeader:
var context=new MyContext();
var ph=new ProductHeader();
ph.User=user;
var pd=new ProductDetail();
pd.ProductAttachments.Add(new ProductAttachment());
ph.ProductDetails.Add(pd);
context.ProductHeaders.Add(ph);
context.SaveChanges();
希望這有助於。
我需要在其他人之前添加productheader並在子實體中使用新生成的ID。我怎樣才能做到這一點 ? – DotnetSparrow 2011-04-13 11:58:13
@DotnetSparrow - 只要模型定義與他正確實體相關,EF將爲您處理此問題。 – 2011-04-13 12:04:24
@DotnetSparrow:你不需要「手動」這樣做。我已經更新了我的答案,以展示如何添加ProductHeader – AbdouMoumen 2011-04-13 12:09:31