Как EF хранит отношения внутри SQL Server Express?(очень смущенный) - PullRequest
0 голосов
/ 19 января 2012

У меня есть вопрос, касающийся того, как Entity Framework хранит отношения между объектами в SQL Server Express 2008, так как сейчас я в замешательстве.

Я работаю над приложением WPF / MVVM, используя EF.Для простоты я приведу пример.

Допустим, у меня есть две таблицы в SQL Server, Customer и OrdersCustomer есть первичный ключ ID (uniqueidentifier), а у Orders тоже есть.Теперь Orders также имеет столбец с именем CustomerId (uniqueidentifier), в котором я определяю отношение к столбцу Customer.ID.

Эти таблицы сопоставляются с объектами Entity Framework Customer и Order.

. То, что я обычно делаю при создании нового Order, будет следующим:

Order newOrder = Context.CreateObject<Order>();
newOrder.Id = Guid.NewGuid();
newOrder.CustomerId = customer.Id;

В этом случае в базе данных (после сохранения контекста) все столбцы в Orders заполнены данными.

Теперь на этот раз я сделал это:

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

При выполнениитаким образом, я также ожидал бы, что в базе данных после сохранения контекста столбец Orders.CustomerId будет иметь значение (GUID Customer).Однако в моем случае это не так.Однако, когда я перемещаюсь по коллекции Customers в моем приложении WPF, все Orders появляются под правом Customer.(Я перезагружал приложение несколько раз, поэтому контекст создавался заново).Также проверено на другой машине.Так что кеша не существует.

Так что мне было интересно, как EF может узнать, к какому Order принадлежит Customer, даже если база данных не содержит необходимой информации внутри столбцов своей таблицы?Или в каком-то другом месте эта информация хранится автоматически?

Я сейчас очень сильно растерялся.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...