Jak upewnić się, że proxy są tworzone przy użyciu wzorca repozytorium z ramką encji?

Mam tę metodę w mojej klasie SurveyController:

public ActionResult AddProperties(int id, int[] propertyids, int page = 1)
{
    var survey = _uow.SurveyRepository.Find(id);
    if (propertyids == null)
        return GetPropertiesTable(survey, page);

    var repo = _uow.PropertySurveyRepository;

    propertyids.Select(propertyid => new PropertySurvey
                {
                    //Setting the Property rather than the PropertyID 
                    //prevents the error occurring later
                    //Property = _uow.PropertyRepository.Find(propertyid),
                    PropertyID = propertyid,
                    SurveyID = id
                })
                .ForEach(x => repo.InsertOrUpdate(x));
    _uow.Save();

    return GetPropertiesTable(survey, page);
}

Funkcja GetPropertiesTable ponownie wyświetla właściwości, ale właściwość PropertySurvey.Property jest oznaczona jako wirtualna, a ja utworzyłem obiekt za pomocą nowego operatora, więc serwer proxy obsługujący leniwe ładowanie nigdy nie został utworzony i jest zerowy, gdy uzyskuję do niego dostęp. Kiedy mamy bezpośredni dostęp do DbContext, możemy użyć metody Create dojawnie utwórz proxy. Ale mam tutaj jednostkę pracy i wzór repozytorium. Zgaduję, że mogę ujawnić metodę context.Create za pomocą metody repository.Create, a następnie muszę pamiętać, aby użyć tego zamiast nowego operatora, gdy dodam obiekt. Ale czy nie lepiej byłoby ująć problem w mojej metodzie InsertOrUpdate? Czy jest jakiś sposób na wykrycie, że dodawana jednostka nie jest serwerem proxy, kiedy powinna i zastępuje proxy? To jest moja metoda InsertOrUpdate w mojej podstawowej klasie repozytorium:

    protected virtual void InsertOrUpdate(T e, int id)
    {
        if (id == default(int))
        {
            // New entity
            context.Set<T>().Add(e);
        }
        else
        {
            // Existing entity
            context.Entry(e).State = EntityState.Modified;
        }
    }

questionAnswers(2)

yourAnswerToTheQuestion