我有两个实体用户和电话。关系是一对一的。映射是
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 并且未在数据库中分配 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);
}
}
当我附加新实体时,旧实体不会从数据库中删除,所以在我的示例中,我在数据库 oldPhone 和 newPhone 中有两个实体。