实体框架:使用FK值保存记录而不查找关系

时间:2009-05-05 16:49:57

标签: c# asp.net entity-framework

我有一个表“Expenses”,它包含一个“ExpenseType”表的FK值。现在,如果我想保存新的费用,我首先获取FK的int值,查找ExpenseType表,并将对象分配给费用对象。例如:

//create new expense
var e = new Expense();

//lookup the associated expense type
var et = context.ExpenseTypeSet.First(e -> e.expenseTypeID == 10);

//set field values
e.expenseName = "Some name";
e.expenseType = et;

//save
context.Save();

有没有办法创建/插入记录而不必先强制对FK表进行查找?不需要查找并强制额外的数据库命中。我已经知道了FK ID ...所以有没有办法只设置ID并让它快乐?

提前致谢 -

1 个答案:

答案 0 :(得分:4)

您也可以使用EntityReference执行此操作:

e.expenseTypeReference.EntityKey 
   = new EntityKey("MyContainer.expenseTypeSet", "expenseTypeID", 10);

我有一个tips series,涵盖了这个问题和相关问题:

您可能想要特别关注的是Tip 7,其中讨论了为FK创建虚假属性。除非您愿意,否则您不需要那么远,但原则很有用。