我有一个名为Trip
的对象。 Trip
有很多Destinations
。 Destinations
有许多Photos
(可选)。但是,Trip
也可以Photo
中的一个Destinations
。
Photo
可以用作旅行的封面照片以及目的地的封面照片,所以我不是让用户上传同一张照片两次,而是Photo
有两个属性}:IsTripCoverPhoto和IsDestinationCoverPhoto。
所以,Photo
看起来像这样:
public partial class Photo : Entity
{
public Photo()
{
Id = GuidComb.GenerateComb();
}
public Guid Id { get; set; }
public virtual Destination Destination { get; set; }
public virtual Trip Trip { get; set; }
public bool IsTripCoverPhoto { get; set; }
public bool IsDestinationCoverPhoto { get; set; }
}
这是我的Trip
映射:
public class TripMapping : EntityTypeConfiguration<Domain.DomainModel.Entities.TripModels.Trip>
{
public TripMapping()
{
HasKey(x => x.Id);
Property(x => x.Id).IsRequired();
HasOptional(t => t.User).WithMany(t => t.Trips).WillCascadeOnDelete(false);
HasRequired(x => x.Settings);
HasMany(x => x.Destinations).WithRequired(x => x.Trip).Map(x => x.MapKey("Trip_Id")).WillCascadeOnDelete(false);
// HasOptional(x => x.Photo).WithRequired(x=>x.Trip).Map(x=>x.MapKey("Trip_Id")).WillCascadeOnDelete(false);
HasOptional(t => t.Photo).WithRequired(x => x.Trip).Map(m => m.MapKey("Trip_Id")).WillCascadeOnDelete(false);
}
这是我的Destination
映射:
public DestinationMapping()
{
HasKey(x => x.Id);
Property(x => x.Id).IsRequired();
HasMany(x => x.Activities).WithRequired(x => x.Destination);
HasMany(x => x.Photos).WithRequired(x => x.Destination).Map(x => x.MapKey("Destination_Id")).WillCascadeOnDelete(false);
}
}
照片上传工作正常,如果我添加到TripMapping
:
HasOptional(x => x.Photo).WithOptionalPrincipal(x=>x.Trip);
我将上传记录添加到数据库中,但只有第一张照片有Trip_Id
...所有后续记录都插入了NO Trip_Id
。我肯定会添加目的地和旅行照片,我一直追踪它,当它添加它,并没有我可以告诉的问题。我真的认为它与我的映射有关,但我只是不知道它是什么!
我已尝试过各种方式进行地图制作,但在我的生活中不能让我的网站将照片插入数据库同时使用Trip_Id
和Destination_Id
...
我尝试在照片中添加贴图:
public PhotoMapping()
{
HasKey(x => x.Id);
Property(x => x.Id).IsRequired();
HasRequired(x=>x.Trip).WithOptional(x=>x.Photo).Map(x=>x.MapKey("Trip_Id")).WillCascadeOnDelete(false);
HasRequired(x => x.Destination).WithMany(x=>x.Photos).Map(x => x.MapKey("Destination_Id")).WillCascadeOnDelete(false);
}
如何执行此映射,以便我上传的照片同时包含旅程和目的地?
答案 0 :(得分:0)
我修好了。我添加到TripMapping
:
HasOptional(x => x.Photo).WithMany().Map(x => x.MapKey("Trip_Id"));
不知道上面的原因是什么,但下面没有......
HasOptional(t => t.Photo).WithRequired(x => x.Trip).Map(m => m.MapKey("Trip_Id")).WillCascadeOnDelete(false);