ユーザーと電話の 2 つのエンティティがあります。関係は1対1です。マッピングは
public class User
{
public virtual Phone Phone { get; set;}
public virtual int PhoneId { get; set;}
}
public class Phone
{
public virtual string Number { get; set;}
}
ユーザーの私のマッピングは次のとおりです。
HasRequired(x => x.Phone).WithMany().HasForeignKey(x => x.PhoneId)
電話が割り当てられたユーザーがいます。フェ
Phone oldPhone = new Phone();
Phone newPhone = new Phone();
User user = new User();
user.Phone = old;
///Save user with phone.
user.Phone = newPhone;
///Save user with phone.
これで、電話が割り当てられたユーザーがいます-newPhoneで、DBにoldPhone行が割り当てられていません。
親(oldPhone)なしでエンティティを削除するようにマッピングを設定するにはどうすればよいですか。
編集済み。
この記事 に従ってマッピングを変更しました
HasRequired(x => x.Phone).WithOptional();
保存には、次の方法を使用します。
public override void Save(TEntity entity)
{
if (entity == null)
{
throw new ArgumentNullException("entity");
}
if (entity.Id > 0)
{
DbContext.Set<TEntity>().Attach(entity);
DbContext.Entry(entity).State = System.Data.EntityState.Modified;
}
else
{
DbContext.Set<TEntity>().Add(entity);
}
}
新しいエンティティをアタッチしても、古いエンティティは DB から削除されないため、この例では、DB oldPhone と newPhone に 2 つのエンティティがあります。