實體框架 - 如何使用導航屬性添加到實體

entity-framework

我想使用Entity Framework將記錄添加到SQL Server表中。我的表的實體具有外鍵,因此具有這些字段的導航屬性。添加新記錄/實體時,如何填充外鍵字段,因為它們不顯示為實體的屬性?

一般承認的答案

最簡單的方法是對相關實體進行查詢並使用導航屬性:

Product p = new Product{
   ID = 5,
   Name = "Bovril",
   Category = ctx.Categories.First( c => c.ID == 5)
};
ctx.AddToProducts(p);
ctx.SaveChanges();

如果要避免數據庫查詢,最簡單的方法可能是使用STUB實體即

// this is a stub, a placeholder for the real entity
Category c = new Category {ID = 5}; 
// attach the stub to the context, similar to do a query
// but without talking to the DB
ctx.AttachTo("Categories", c);
Product p = new Product{
   ID = 5,
   Name = "Bovril",
   Category = c
};
ctx.AddToProducts(p);
ctx.SaveChanges();

如果您需要有關此存根技術的更多幫助,請查看此主題的博客文章



許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因