C# 如何交换两个子实体值
我有一个叫做“空间”的实体,里面有“图像”。Images有一个排序属性,它是int。我试图看看是否有一个简单的linq可以用来交换排序值C# 如何交换两个子实体值,c#,linq,entity-framework,C#,Linq,Entity Framework,我有一个叫做“空间”的实体,里面有“图像”。Images有一个排序属性,它是int。我试图看看是否有一个简单的linq可以用来交换排序值 public class Space { public int SpaceId { get; set; } public virtual ICollection<SpaceImage> Images { get; set; } } public class SpaceImage { public int SpaceImag
public class Space
{
public int SpaceId { get; set; }
public virtual ICollection<SpaceImage> Images { get; set; }
}
public class SpaceImage
{
public int SpaceImageId { get; set; }
public byte[] Image { get; set; }
public byte[] ImageThumbnail { get; set; }
public string ContentType { get; set; }
public int Ordering { get; set; }
}
通常,LINQ将用于查询。您可以使用它查找适当的
SpaceImage
实例,然后适当地设置值:
// Assuming this is a method in the Space class
public void Swap(int oldOrder, int newOrder)
{
var oldInst = this.Images.FirstOrDefault(si => si.Ordering == oldOrder);
var newInst = this.Images.FirstOrDefault(si => si.Ordering == newOrder);
if (oldInst != null && newInst != null)
{
oldInst.Ordering = newOrder;
newInst.Ordering = oldOrder;
}
else
{
// There weren't matching images - handle that case here
}
}
你不应该把你想交换订单的
SpaceImageId
传进来吗?我不这么认为。我正在通过“Space”实体访问图像数据。如果是这样,那么就不需要spaceId
,因为它已经是实体的一部分了。我想我确实需要spaceId。Space和SpaceImage具有一对多关系。因此,我想将图像顺序交换为与特定空间ID相关的图像,我如何通过我的“空间”存储库将这些图像保存回去?我没有图像回购,只有一个用于“Space”@user1186050的图像回购,这是在实体上。这将设置这些对象的属性,因此请以正常方式保存。目前,我只能进行SpacerPO.insertorupdate(space)调用。如果我将这两个图像设置回空间,然后将空间传递给repo,则会保存已更新的图像数据吗?@user1186050取决于repo,但通常是。
// Assuming this is a method in the Space class
public void Swap(int oldOrder, int newOrder)
{
var oldInst = this.Images.FirstOrDefault(si => si.Ordering == oldOrder);
var newInst = this.Images.FirstOrDefault(si => si.Ordering == newOrder);
if (oldInst != null && newInst != null)
{
oldInst.Ordering = newOrder;
newInst.Ordering = oldOrder;
}
else
{
// There weren't matching images - handle that case here
}
}