1 対多の関係を持つ linq データベースに問題があります。クラスは次のとおりです。
private EntityRef<Account> _account;
[Association(Storage = "_account", ThisKey = "IDMovement", OtherKey = "IDAccount", IsForeignKey = true)]
public Account Account
{
get { return this._account.Entity; }
set
{
Account previousValue = this._account.Entity;
if (((previousValue != value) || (this._account.HasLoadedOrAssignedValue == false)))
{
NotifyPropertyChanging("Account");
if ((previousValue != null))
{
this._account.Entity = null;
previousValue.Movements.Remove(this);
}
this._account.Entity = value;
if ((value != null))
{
value.Movements.Add(this);
}
NotifyPropertyChanged("Account");
}
}
}
そして反対側:
private EntitySet<Movement> _movements;
[Association(Storage = "_movements", OtherKey = "IDMovement", ThisKey = "IDAccount")]
public EntitySet<Movement> Movements
{
get { return this._movements; }
set { this._movements.Assign(value); }
}
private void OnMovementAdded(Movement movement)
{
NotifyPropertyChanging("Movement");
movement.Account = this;
NotifyPropertyChanged("Movement");
}
private void OnMovementRemoved(Movement movement)
{
NotifyPropertyChanging("Movement");
movement.Account = null;
NotifyPropertyChanged("Movement");
}
私の問題は、データベースに新しい動きを挿入する必要があるときに、データベースに既にある値を「EntityRef _account」変数に割り当てる方法がわからないことです。
例: アカウント "general" の動きを挿入する必要があります。このアカウントはもちろん既にデータベースに存在します...どうすれば自分の動きに対して、アカウント "general" が "movement.Account" にあると言うことができますか?私のデータベースに含まれているものとまったく同じですか?
そのようなことを試しましたが、新しいアカウントを作成したように機能しません。
Movement movement = new Movement();
movement.Category = (from f in context.Categories
where f.Name == this.Categories.ElementAt(this.ChoosenCategory).Name
select f).FirstOrDefault();
movement.Account = (from f in context.Accounts
where f.Name == ChoosenAccount.Name
select f).FirstOrDefault();
context.Movements.InsertOnSubmit(movement);
context.SubmitChanges();