私はTrip
というオブジェクトを持っています。 Trip
には多くのものがあります。Destinations
Destinations
には多くのものがあります。Photos
(オプション)。しかしながら、Trip
は、Destinations
の1つからPhoto
を有することもできる。 IsTripCoverPhotoとIsDestinationCoverPhoto:共有エンティティとのエンティティフレームワークのマッピング
Photo
が旅行のためのカバー写真だけでなく、送信先のカバー写真として使用し、そうではなく、ユーザが二度同じ写真をアップロードさせることができ、私はPhoto
上の2つのプロパティを持っています。
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);
}
}
写真のアップロードが正常に動作して:これは私のDestination
マッピングが
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);
}
です:これは私のTrip
マッピングが
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; }
}
です:
ので、Photo
は次のようになりますTripMapping
に追加すると:
HasOptional(x => x.Photo).WithOptionalPrincipal(x=>x.Trip);
私はデータベースに追加されたアップロードのレコードを取得しますが、唯一の最初の写真はTrip_Id
を持っている...それ以降のすべてのレコードがNO Trip_Id
で挿入されています。私は間違いなく写真への目的地と旅行の両方を追加しています。それを追加して問題がない限り、私はそれをすべて追跡しました。私は本当にそれが私のマッピングと関係があると思っていますが、私はそれが何であるか分かりません!
私は、私が追加しようとしたマップにあらゆる-た-方法を試してみたが、私の人生のために私のサイトはTrip_Id
とDestination_Id
の両方でDBに写真を挿入するために取得することはできません...
写真へのマッピング:
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);
}
アップロードした写真に旅行と目的地の両方があるようにこのマッピングを実行するにはどうすればよいですか?