2016-11-27 15 views
0

私はTripというオブジェクトを持っています。 Tripには多くのものがあります。DestinationsDestinationsには多くのものがあります。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_IdDestination_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); 
    } 

アップロードした写真に旅行と目的地の両方があるようにこのマッピングを実行するにはどうすればよいですか?

答えて

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); 
関連する問題