C# SQL Server内部的EF存储关系是如何表达的?(非常困惑)

C# SQL Server内部的EF存储关系是如何表达的?(非常困惑),c#,.net,sql-server-2008,entity-framework,C#,.net,Sql Server 2008,Entity Framework,我有一个关于实体框架在SQLServerExpress2008中存储对象之间关系的方式的问题,因为我现在非常困惑 我正在使用EF开发一个WPF/MVVM应用程序。为了简单起见,我将使用一个例子 假设我在SQL Server中有两个表,Customer和Orders客户有一个主键ID(uniqueidentifier),而订单也有一个主键。现在,Orders也有一个名为CustomerId(uniqueidentifier)的列,我在该列上定义了与Customer.ID列的关系 这些表映射到实体框

我有一个关于实体框架在SQLServerExpress2008中存储对象之间关系的方式的问题,因为我现在非常困惑

我正在使用EF开发一个WPF/MVVM应用程序。为了简单起见,我将使用一个例子

假设我在SQL Server中有两个表,
Customer
Orders
<代码>客户有一个主键
ID
uniqueidentifier
),而
订单
也有一个主键。现在,
Orders
也有一个名为
CustomerId
uniqueidentifier
)的列,我在该列上定义了与
Customer.ID
列的关系

这些表映射到实体框架对象
Customer
Order

创建新的
订单时,我通常会这样做:

Order newOrder = Context.CreateObject<Order>();
newOrder.Id = Guid.NewGuid();
newOrder.CustomerId = customer.Id;
这样做时,我还希望在数据库中保存上下文后,
Orders.CustomerId
列将有一个值(客户的GUID)。然而,就我而言,情况并非如此。但是,当我在WPF应用程序中导航
客户
集合时,所有
订单
都显示在右侧
客户
下。(我多次重新启动应用程序,因此上下文是新创建的)。也在另一台机器上进行了测试。所以没有缓存

所以我想知道,即使数据库没有在其表的列中保存必要的信息,EF如何知道哪个
订单
属于哪个
客户
?或者是否有其他地方自动存储这些信息


到目前为止,我非常非常困惑。

不,没有这样的地方。很可能还发生了其他事情:您使用的是两个不同的数据库,但查看的是错误的数据库,或者您查看的是其他过时/错误的数据。你需要提供更多的数据,也许屏幕快照绝对不是数据库。我只有一个生产和开发数据库,我已经检查过了。但是,肯定有什么事情发生了。我现在不在工作。但是明天早上我会再检查一下,如果我发现了什么,我会告诉你。我发现了问题,我有点为自己感到羞愧:-)我在数据库中定义的客户和订单之间的关系都是错误的。我让它指向Orders表中的另一列,而不是Orders.CustomerId与customers.Id的关系。因此CustomerId列中的值为空。哦,天哪。
Order newOrder = Context.CreateObject<Order>();
newOrder.Id = Guid.NewGuid();
newOrder.Customer = customer; //so I'm assigning the Customer object to the relationship, not the ID