Создается несколько объектов ObjectChangeTracker, можно ли этого избежать? - PullRequest
0 голосов
/ 28 декабря 2010

Мы работаем над POC, где у нас есть следующая архитектура (MVVM),

WPF (клиент) + модель WCF + (DataAccess) + ADO.Net Entity Framework 4.0 (с SQL Server 2008 R2 в качестве базы данных)

Все это разные проекты.

В слое DataAccess мы создали разные Entity Models (edmx) на основе функциональности.Таблицы под перкулярным потоком группируются и создают разные модели сущностей.Мы используем объекты самоконтроля для связи с клиентом WPF через сервис wcf.Для одиночной модели все работает отлично.Но когда мы создали несколько моделей, то появилось мало вопросов.Модели Mutliple имеют несколько дублирующих таблиц / сущностей.Два варианта:

1) Когда мы пытаемся получить доступ к сущностям из разных моделей, создаются множественные объекты "ObjectChangeTracker".Например, CompanyModel (edmx) - Компания (Entity) - ObjectChangeTracker, ObjectState ProductModel (edmx) - Клиент (Entity) - ObjectChangeTracker1, ObjectState1 OrderModel (edmx) - Одер (Entity) - ObjectChangeTracker2, ObjectState2

есть любой способчтобы избежать этого?

2) Существует несколько таблиц, которые совместно используются моделями, например, компания (сущность) используется в All выше mdoels.Во время компиляции он не выдает никакой ошибки.Но во время выполнения выдает ошибку, в которой говорится: «Указанная схема недопустима. Ошибки: сопоставление типа CLR с типом EDM неоднозначно, поскольку несколько типов CLR соответствуют типу EDM« Компания »». Чтобы решить эту проблему, мы переименовали объекты с некоторымипрефикс, чтобы сделать их уникальными.Есть ли другой способ решить эту проблему, не изменяя имя объекта в той же сборке?

Заранее благодарен и признателен, если у кого-то есть подход к этим вопросам.

Спасибо, Киран

1 Ответ

0 голосов
/ 28 декабря 2010

1) Вы всегда активируете ChangeTracker, когда захватываете сущности из своего доступа к данным?Я думаю, вы не можете избежать того, что создано, если вы не используете шаблон POCO.В некоторых делах предстоит еще кое-что сделать, но у вас будут более легкие предметы.Затем вы должны сами управлять состоянием сущности.Я думаю, что хорошо оставаться на самотрекинге, но пока вы используете WCF, вы должны изменить тип коллекции на FixUpCollection, так как я помню, как лучше работать с вашей службой WCF.СОВЕТ: Не забудьте отключить отложенную загрузку, иначе вы получите все дочерние записи, которые вам не нужны, когда объекты сериализуются.

2) Попробуйте разделить модели в разных сборках, этолучше практиковаться, и я думаю, что вы преодолеете эти проблемы.Я работал таким образом, и это нормально.

Надеюсь, я помог ....

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