我有两个具有一对一关系的实体,我试图同时保存这两个实体而不执行上下文操作。SaveChanges在第一个实体和第二个实体之间进行,但INSERT语句与FOREIGN KEY约束dbo.HotelImages',column 'Id'冲突。这是我的代码:
var hotelImage = new HotelImageEntity
{
Id = Guid.NewGuid(),
IdHotel = entity.Id,
GalleryId = galleryId,
IdImageType = idImageType
});
await _context.HotelsImages.Add(hotelImage);
var hotelMultimediaHighlighted = new HotelMultimediaHighlighted
{
Id = Guid.NewGuid(),
IdHotel = entity.Id,
IdHotelImage = hotelImage.Id,
Order = 1
});
await _context.HotelMultimediaHighlighteds.Add(hotelMultimediaHighlighted);
await _context.SaveChangesAsync();
这是实体Map
public class HotelMultimediaHighlightMapping : IEntityTypeConfiguration<HotelMultimediaHighlightedEntity>
{
public void Configure(EntityTypeBuilder<HotelMultimediaHighlightedEntity> builder)
{
builder.HasKey(hm => hm.Id);
builder.HasOne(hm => hm.Hotel)
.WithMany(h => h.HotelMultimediaHighlighteds)
.HasForeignKey(hm => hm.IdHotel);
builder.HasOne(hm => hm.HotelVideo)
.WithOne(hv => hv.HotelMultimediaHighlight)
.HasForeignKey<HotelMultimediaHighlightedEntity>(hm => hm.IdHotelVideo);
builder.HasOne(hm => hm.HotelImage)
.WithOne(hg => hg.HotelMultimediaHighlightEntity)
.HasForeignKey<HotelMultimediaHighlightedEntity>(hm => hm.IdHotelImage);
builder.ToTable("HotelMultimediaHighlighted");
}
}
1条答案
按热度按时间iibxawm41#
您可以通过将
HotelMultimediaHighlightedEntity
直接分配给HotelImage
来将它们连接在一起,外部变量将自动键入。编辑:编辑以给予更好的说明和想法。