Перечисления с каркасом сущности - значение перечисления независимо от идентификатора строки таблицы - PullRequest
1 голос
/ 21 апреля 2011

У меня есть таблица клиентов: Клиент (id, имя status_id).
У меня есть таблица статусов: Статус (идентификатор, имя, код).
Существует связь (FK) между Клиентом и Статусом: status_id (Клиент) = id (статус).

В коде .NET у меня есть перечисление Status и класс Customer:

enum Status {
    status_1,
    status_2,
    status_3,
    status_4
}

class Customer {
    public virtual long id {get;set;}
    public virtual string name {get;set;}
    public virtual Status customer_status {get;set;}
}

Перечисления не содержат значений строк состояний из базы данных, потому что я не хочусоздать зависимость данных в коде (жестко запрограммировано).

Как я могу использовать структуру сущностей для представления класса клиента в edmx?

РЕДАКТИРОВАТЬ:
Все решения, которые я нашел, предполагают, что значения перечисления совпадают со значением status_id в таблице Customer.У них даже нет таблицы Status, которая очень важна для меня, чтобы ограничить возможность значения status_id

1 Ответ

4 голосов
/ 21 апреля 2011

Ни за что.Перечисления вообще не поддерживаются, поэтому вы должны изменить свой класс, чтобы включить и statusId (не обязательно должен быть общедоступным), и не отображать customer_status, который будет обрабатывать преобразование записи базы данных в перечисление.Вы должны включить зависимость для записи, потому что ваш код должен знать, какой идентификатор записи представляет какой элемент перечисления.Это не структурное отображение, а отображение данных, которое, конечно, включает в себя зависимость данных.

Также не включайте таблицу Состояний в вашу модель.

Существует один подход к поддельным перечислениям в EFv4 , но это потребует еще большего изменения вашего кода, и члены перечисления будутвероятно, придется использовать те же значения, что и записи базы данных.

...