Entity Framework: модель не отражает БД - PullRequest
0 голосов
/ 12 февраля 2009

Я, наверное, думаю, что все это неправильно, но у меня есть следующие таблицы БД:

alt text

Когда я запускаю мастер EF в VS2008, я получаю следующую модель:

alt text

Вы заметите, что в модели EF показано, что у Entity нет поля для EntityTypeID или EntityStatusId. Вместо этого он показывает его как свойство навигации, поэтому поле кажется не адресуемым, когда я создаю экземпляр сущности (простите за путаницу в терминологии: сущность - это таблица / класс в моем пространстве имен, а не в пространстве имен EF). Как я могу назначить EntityTypeID и StatusTypeID при создании экземпляра Entity?

1 Ответ

3 голосов
/ 12 февраля 2009

Да, структура сущностей скрывает свойства идентификатора внешнего ключа и отображает свойства навигации. Существует долгая дискуссия о том, почему это так, здесь . Обычное средство назначения ссылки на другую сущность состоит в том, чтобы назначить экземпляр сущности, а не значение идентификатора внешнего ключа, например:

var foo = new Entity();
var status = (from .... select ...).FirstOrDefault();
foo.StatusCodes = status;

Однако можно напрямую назначить идентификатор внешнего ключа, если вы знаете, что это такое:

foo.StatusCodesReference = new EntityKey(
   "MyEntityContextName.StatusCodesEntitySetName", "StatusCodeId", value);

Очевидно, подставьте действительные значения в приведенном выше.

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