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)
我有指定的電話用戶。 f1。
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和未分配oldPhone行中的DB。
我怎樣才能建立映射刪除實體無父(oldPhone)。
編輯。
我照着this文章
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 oldPhone和newPhone中有兩個實體。
首先,您的房屋應該是正確的。 'WithMany()'不是1:1。其次,在你的例子中究竟發生了什麼,你沒有想到?並且'用手機保存用戶'後面應該寫些什麼代碼? –
固定第一和第二和第三 –