Я унаследовал базу данных среднего размера, которую мы пытаемся использовать с Entity Framework в переписываемой MVC2, над которой мы работаем. Мы использовали существующую базу данных для генерации модели данных (файл .edmx), и все было хорошо. Пока я не понял, что не могу использовать точечную запись для доступа ко всем полям.
appointment.Employee.name // works fine
appointment.Supervisor.name // this fails
appointment.SupervisorID // works and is an int
Когда я посмотрел поближе, то увидел, что первый сработавший случай, скорее всего, был случайностью. В таблице несколько столбцов для таких вещей, как SupervisorID
, SecretaryID
, DogGroomerID
и т. Д., Причем все они указывают на таблицу Employee
и помечены как внешние ключи. Похоже, Visual Studio почти все сделала правильно, она просто назвала все эти ассоциации в соответствии с задействованными ролями, а затем прикрепила номера, чтобы сделать их уникальными. Итак, следующий код работает:
appointment.Employee1.name // My name
appointment.Employee7.name // My Boss's Name
appointment.Employee5.name // Fluffy's groomer's name
Но это действительно побеждает цель. Итак, что я сделал неправильно или что неправильно настроено, что заставило бы Visual Studio генерировать такие явно глупые имена? Я попытался изменить их в инструменте визуального моделирования, и это сработало. Переименование Employee7
в Supervisor
дало желаемый эффект, но на самом деле это не масштабируемое решение, чтобы я потратил следующие 10 часов на переименование. Что мы делаем, когда клиент снова получает базу данных в поле, и мне нужно добавить новую схему?
Спасибо за понимание и помощь!
-Эрик