Создать сущность и динамические отношения с помощью подхода первого класса - PullRequest
0 голосов
/ 25 декабря 2011

У меня вопрос по EF4, и я хочу объяснить это на примере:

class User
{

    public int Type;
    public object Pointer;

}


class Admin
{

    public Username;
    public Password;
    ...

}

class Manager
{

    public Username;
    public Password;
    ...

}

class Member
{

    public Username;
    public Password;
    ...

}

Я хочу создать это: посмотрите на класс User, если User.Type == 1 я хочу, чтобы User.Pointer указывал на объект класса Admin, и если User.Type == 2 я хочу, чтобы User.Pointer указывал на объект класса Manager и, наконец, если User.Type == 3, я хочу, чтобы User.Pointer указывал на объект класса Member.

но я хочу знать, возможно ли спроектировать это в EF4? Как? Есть ли решение, чтобы спроектировать что-то подобное? можно ли получить некоторую помощь в окне Сведения о карте в Visual Studio 2010, чтобы сделать это? Мне нужен совет, друзья, я жду:)

С уважением, Али

1 Ответ

1 голос
/ 25 декабря 2011

Да, это возможно в EF 4, но немного отличается от того, что вы пытаетесь сделать сейчас.

Вместо создания отдельных классов для каждого типа пользователя и определения свойств, таких как UserName и Password, для каждого из них вы можете использовать наследование.

Если вы создадите базовый класс User и определите для них UserName и Password, вы можете наследовать все другие типы пользователей от User.

EF знает, как сопоставить это с базой данных, и использует для нее столбец дискриминатора, как вы сказали, где определенный индекс указывает на тип класса. Окно Mapping Details, действительно, может помочь вам. Здесь вы можете указать, что такое столбец дискриминатора и какая строка должна указывать на какую сущность.

Вот некоторая документация , которая может помочь вам в дальнейшем, если вы используете Entity Model, или здесь , если вы используете подход Code First.

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