Обновить базу данных n: n - PullRequest
1 голос
/ 27 июля 2010

У меня есть два класса:

public class RichMan
{

public string ID {get;set;}
List<Car> _cars=new List<Car>();
{
    public List<Car> Cars
    {
    get
                {
                    return this._cars;
                }
                set
                {
                    this._cars = value;
                    NotifyChanged("Email");
                }

    }

}

и

public class Car
{
public string ID {get;set;}
}

И 3 таблицы:

RichMan 
ID int

Cars:
ID int

and CarsOfRichmen

idcar int (FK)
idrichman (FK)

Если бы коллекция автомобилей Рихамна изменилась бы, как это сделать в базе данных?

Удалить все записи из CarsOfRichmen, где idrichman является идентификатором моего Ричама, а затем в foreach добавить ссылки на CarsOfRichmen?

Это хорошая практика?

Ответы [ 2 ]

3 голосов
/ 27 июля 2010

Нет, это не очень хорошая практика.

Автомобили могут иметь другую связанную информацию; изменения в автомобилях могут вызывать другие действия.

Вы должны просто добавить / удалить / обновить соответствующие автомобили [EDIT] и / или CarsOfRichmen ...

2 голосов
/ 27 июля 2010

Здесь есть как минимум 3 паттерна, о которых я знаю:

1) Согласно Паскалю - проанализируйте сценарии «до» и после, а затем примените соответствующую дельту к данным (вставьте, обновите и удалите)из ссылок по мере необходимости.

2) Удаление ссылок, как вы предложили (но не автомобили), является довольно распространенным явлением.Однако у вас должна быть возможность ведения журнала / аудита в некоторой форме, чтобы вы могли воссоздать то, что произошло.

3) Другой распространенный шаблон заключается в добавлении даты из / date в диапазон для ссылок и создании версий таким образом.Однако производительность может ухудшиться, так как ссылки складываются довольно быстро.

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