Изменения в модели Entity Framework, основанной на базе данных - PullRequest
0 голосов
/ 10 мая 2019

Мне нужно создать графический интерфейс для запросов к базе данных, и я решил использовать Entity Framework и подход, основанный на базе данных.

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

База данных выглядит следующим образом:

CREATE TABLE a (
    idA int
)
CREATE TABLE b (
    idB int
)
CREATE TABLE c (
    idC int,
    fkA int,
    fkB int
)

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

CREATE TABLE a (
    idA int
)
CREATE TABLE b (
    idB int,
    fkA int,
)
CREATE TABLE c (
    idC int,
    fkB int
)

Со словами, c настроен, чтобы быть дочерним элементом независимых a и b, в то время как в действительности, bвсегда является потомком a, а c является потомком b (и, следовательно, a).

Как бы я изменил сгенерированную модель, чтобы изменить это, если это вообще возможно?Использование Visual Studio и редактора модели EDMX, очевидно, но какие изменения необходимо внести в модель, чтобы она по-прежнему загружала неправильный макет базы данных, но предлагала исправленный вариант в графический интерфейс?

Графический интерфейс будеттолько читать данные, нет необходимости писать что-либо в любое время.

Спасибо!

1 Ответ

2 голосов
/ 10 мая 2019

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

Если вы используете edmx-файл Ado.net, обновление легко. Выберите файл .edmx и выберите update model, выберите связанные таблицы из базы данных и выполните оставшуюся часть графического интерфейса.

Если вам нужно что-то из консоли диспетчера пакетов или из консоли dotnet. Целесообразно использовать учебник из здесь .

Обновление с OP

Это возможно, но это может привести ко многим нежелательным побочным эффектам. Когда вы получаете объекты из базы данных, вы должны поместить их в новые объекты, которые представляют новую разыскиваемую структуру. Еще один способ сделать это - изменить модель, вам нужно добавить свойства к указанным классам. Имейте в виду, что ваш код будет страдать от побочных эффектов.

...