使用Entity Framework时,设置FK时应该设置导航属性还是外键属性?

AD7*_*700 6 c# orm entity-framework entity-framework-core

我有一些代码看起来像这样:

var customer = dbcontext.Customers.Find(1);

var order = new Order();
order.CustomerId = customer.Id;

dbcontext.Orders.Add(order);
dbcontext.SaveChanges();
Run Code Online (Sandbox Code Playgroud)

最佳实践是这样做还是通过设置导航属性来设置关系:

var customer = dbcontext.Customers.Find(1);

var order = new Order();
order.Customer = customer; //Set navigation prop as opposed to FK field

dbcontext.Orders.Add(order);    
dbcontext.SaveChanges();
Run Code Online (Sandbox Code Playgroud)

什么方法被认为是最佳实践或首选?

小智 1

如果您的代码需要客户对象进行进一步操作,两种方式都可以,EF 代理将处理一切。

否则,通过设置FK,您可以避免查询Customers dbset来检索客户信息,提高操作效率(您已经拥有客户id)。我通常更喜欢这种方式。