是否可以将关系从实体转移到另一个实体?
我有一个表用户,其 1 .. * - 与一个名为 Cars 的表相关联。在我的代码的一部分中,我希望用户取代另一部分,即将所有Cars关系移动到新用户。在SQL中,它可以像这样实现,但是可以实现实体框架吗?
UPDATE Cars SET UserId = @newUserId WHERE UserId = @oldUserId
我希望解决方案尽可能通用,以便我可以在需要时重复使用它。你将如何实现这一目标?
下面你会找到我迄今为止尝试过的一些内容。
只需复制
newUser.Cars = oldUser.Cars;
oldUser.Cars = new EntityCollection<Cars>();
删除并插入
public static void MoveFrom<T>(this EntityCollection<T> to,
EntityCollection<T> from)
where T : class, IEntityWithRelationships
{
foreach (T item in from.ToArray())
{
from.Remove(item);
to.Add(item);
}
}
使用CopyTo
public static void MoveFrom<T>(this EntityCollection<T> to,
EntityCollection<T> from)
where T : class, IEntityWithRelationships
{
T[] array = new T[from.Count()];
from.CopyTo(array, 0);
foreach (T item in array)
{
to.Add(item);
}
}
Copying from EntityCollection to EntityCollection impossible?建议使用最后一个,但会出现以下错误
发生了参照完整性约束违规:主键 作为参照完整性约束的一部分的属性不能 除非正在设置,否则在依赖对象未更改时更改 该协会的主要对象。主要对象必须是 跟踪并且没有标记为删除。