データベースに 2 つのテーブルがあります。
[Table]
public class Names: INotifyPropertyChanged, INotifyPropertyChanging
{
public Names()
{
this._namesCar = new EntitySet<Coord>(this.OnCarAdded, this.OnCarRemoved);
}
private int _id;
private string _name;
private EntitySet<Cars> _namesCar;
[Column(IsPrimaryKey = true, IsDbGenerated = true, DbType = "INT NOT NULL Identity", CanBeNull = false, AutoSync= AutoSync.OnInsert)]
public int Id
{
get { return _id; }
set
{
if (_id != value)
{
NotifyPropertyChanging("Id");
_id = value;
NotifyPropertyChanged("Id");
}
}
}
[Column]
public string Name
{
get { return _name; }
set
{
if (_name != value)
{
NotifyPropertyChanging("Name");
_name = value;
NotifyPropertyChanged("Name");
}
}
}
[Association(Storage = "_namesCar", ThisKey = "Id", OtherKey = "NamesId")]
public EntitySet<Cars> NamesCar
{
get { return _namesCar; }
set
{
if (_namesCar != value)
{
NotifyPropertyChanging("NamesCar");
_namesCar = value;
NotifyPropertyChanged("NamesCar");
}
}
}
private void OnCarAdded(Cars car)
{
car.Name= this;
}
private void OnCarRemoved(Cars car)
{
car.Name= null;
}
と
[Table]
public class Cars: INotifyPropertyChanged, INotifyPropertyChanging
{
private int _id;
private int _nameid;
private string _cars;
private EntityRef<Names> _carNames = new EntityRef<Names>();
[Column(IsPrimaryKey = true, IsDbGenerated = true, DbType = "INT NOT NULL Identity", CanBeNull = false, AutoSync = AutoSync.OnInsert)]
public int Id
{
get { return _id; }
set
{
if (_id != value)
{
NotifyPropertyChanging("Id");
_id = value;
NotifyPropertyChanged("Id");
}
}
}
[Column(DbType = "Int")]
public int NameId
{
get { return _nameid; }
set
{
if (_nameid != value)
{
NotifyPropertyChanging("NameId");
_nameid = value;
NotifyPropertyChanged("NameId");
}
}
}
[Association(Storage = "_carNames", ThisKey = "NameId", OtherKey = "Id", IsForeignKey = true)]
public Names Names
{
get { return this._carNames.Entity; }
set
{
NotifyPropertyChanging("Names");
this._carNames.Entity = value;
if (value != null)
{
this._nameid = value.Id;
}
NotifyPropertyChanged("Names");
}
}
それらは同じデータコンテキストに属しています:
public class CarsDataContext : DataContext
{
// Pass the connection string to the base class.
public CarsDataContext(string connectionString)
: base(connectionString)
{ }
// Specify a table for the items.
public Table<Names> RecNames;
public Table<Cars> RecCars;
}
新しい名前を追加して、その名前に関連付けられた新しい車を追加できます。1 つの名前から車を削除することもできます。ただし、名前を削除しようとすると、例外が発生します。その名前に関連する車があるからだと思います。関連付けられた車を含む名前を削除する最良の方法は何ですか? 私の意図は、最初にすべての車を削除してから名前を削除することです。
ありがとう!