2014-11-26 5 views
0

Все:Почему инфраструктура Entity Framework.Data.Entity.Core.Objects.RelationshipEntry Wrong? (For Change Tracking)

Наша компания работает над приложением ASP.NET, которое использует Entity Framework. Модель платформы Entity Первый подход был предпринят для создания таблиц базы данных и POCOs Кроме того, мы используем средство тестирования усилий для платформы Entity Framework и NUnit Framework для проведения модульного тестирования.

В настоящее время мы пытаемся выполнить некоторые операции CRUD в приложении ASP.NET для клиентов и учетных записей.

Каждый клиент имеет возможность иметь не более одной учетной записи. Вот как отношения между 2 таблицы выглядит в базе данных Диаграмма: enter image description here

Наше приложение также отслеживает измененном отслеживания объектов и взаимосвязей между сущностями.

Мы имеем следующий пример кода с населенными клиентов и счета деловых записей:

 Customer custFour = new Customer { CustomerID = "4 ", Orders = new HashSet<Order>(), CustomerDemographics = new HashSet<CustomerDemographic>(), CompanyName = "FC Barcelona", ContactName = "Lionel Messi", ContactTitle = "current top basket ball player", Address = "344 testing street", City = "Buenos Aires", Region = "Oklahoma", PostalCode = "4498", Country = "Argentina", Phone = "2344949494", Fax = "33325" }; 

     Account acctFour = new Account { UserName = "lmessi", Password = "myteamlostworldcupmatch", Customer = custFour, AccountRoleMaps = new HashSet<AccountRoleMap>() }; 

Чтобы сохранить его кратким, мы также ссылаться на строку кода, как следующий, так что Entity Framework DbContext может сохранить клиента и лица, упомянутые выше данные, а также отношения между клиентами и счета юридических лиц:

_context.Set<Account>().Add(acctFour); 

_context.SaveChanges(); 

Поскольку точка исполнения продолжается, мы в конечном счете достичь следующий отрывок кода:

  List<System.Data.Entity.Core.Objects.ObjectStateEntry> allAddModDelItems = ((IObjectContextAdapter)_context).ObjectContext.ObjectStateManager.GetObjectStateEntries(EntityState.Added | EntityState.Modified | EntityState.Deleted).ToList(); 

      foreach (var osEnt in allAddModDelItems) 
      { 

      } 

Вышеприведенный фрагмент кода извлекает все объекты и отношения между объектами, которые были добавлены, изменены и удалены.

Я уже проверил System.Data.Entity.Core.Objects.EntityEntry для клиента и System.Data.Entity.Core.Objects.EntityEntry для учетной записи, и у них есть действительные бизнес-данные. enter image description here

К сожалению, System.Data.Entity.Core.Objects.RelationshipEntry имеет Entity утратившим в EntityKey как нуль, который, кажется, неправильно, потому что System.Data.Entity.Core.Objects.RelationshipEntry должна отражать отношения между объектами Account и Customer, которые я создал. enter image description here Почему System.Data.Entity.Core.Objects.RelationshipEntry Wrong? Другими словами, почему объекты System.Data.Entity.Core.Objects.RelationshipEntry и свойства EntityKey null?

ответ

Смежные вопросы