更新数据库n:n

时间:2010-07-27 06:33:44

标签: c# sql sql-server-2005

我有两个班级:

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)

如果收集richamn的汽车会改变在数据库上的操作方式吗?

从CarsOfRichmen中删除所有记录,其中idrichman是我的richam的id,然后在foreach中向CarsOfRichmen添加实际内容?

这是好的做法吗?

2 个答案:

答案 0 :(得分:3)

不,这不是一个好习惯。

汽车可以有其他相关信息;汽车的变化可以触发其他行动。

您必须添加/删除/更新相关汽车[编辑]和/或CarsOfRichmen ......

答案 1 :(得分:2)

我至少知道3种模式:

1)根据Pascal - 分析“之前”和之后的场景,然后根据需要将相关的delta应用于链接的数据(插入,更新和删除)。

2)按照你的建议(但不是汽车)删除链接是一种非常常见的模式。但是,您应该具有某种形式的日志记录/审计功能,以便您可以重新创建发生的事情。

3)另一种常见模式是在链接上添加日期/日期到范围,并以这种方式对其进行版本化。然而,由于链接堆积得非常快,性能可能会降低。