我有一個實體,包括許多不同的文檔與我的數據庫中的任何實體unkown關係。與OneWay的一對一或零關係CascadeOnDelete
public class Document : BaseEntity
{
public string Filename { get; set; }
public string MIMEType { get; set; }
public int? Length { get; set; }
public byte[] Content { get; set; }
}
和codefirst映射是:
public DocumentConfiguration()
{
Property(x => x.Filename).HasMaxLength(300).IsRequired();
Property(x => x.MIMEType).HasMaxLength(300).IsRequired();
Property(x => x.Length).IsOptional();
Property(x => x.Content).IsOptional().HasColumnType("varbinary(max)");
ToTable("Document");
}
現在我想一個可選的關係記錄表在我addressentity像這樣:
public class Address : BaseEntity
{
public string Name1 { get; set; }
public string Name2 { get; set; }
public string Additional { get; set; }
public string Street { get; set; }
public string HousNr { get; set; }
public string ZipCode { get; set; }
public string City { get; set; }
public virtual Document Image { get; set; }
}
與以下映射:
public AddressConfiguration()
{
Property(x => x.Name1).IsRequired().HasMaxLength(250);
Property(x => x.Name2).HasMaxLength(250);
Property(x => x.Additional).HasMaxLength(250);
Property(x => x.Street).HasMaxLength(250);
Property(x => x.HousNr).HasMaxLength(10);
Property(x => x.ZipCode).HasMaxLength(10);
Property(x => x.City).HasMaxLength(100);
HasOptional(x => x.Image)
.WithOptionalDependent()
.Map(map => map.MapKey("ImageId")).WillCascadeOnDelete();
ToTable("Address");
}
但是,在刪除文檔表中的圖像時刪除相關地址。
我想要一個OneWay-Deletation從地址到文檔,但不是從文檔到地址...?
我該如何實現?
謝謝。
謝謝morteza。文檔可以從各種實體中引用,所以我可以爲所有即將到來的實體映射相同的指定「外鍵」 :「RelatedRecordId」與任何類型的關係(一對一或一對多..?可選我可以有一個沒有任何關係的文檔.. – 2012-04-06 09:18:32
不,你不能!AddressId只用於地址和地址。不支持FK引用多個實體,EF也不支持。你必須在文檔上有更多的FK,這不一定是一個好的設計。也許你可以回到你的源頭最終通過在地址上提供DocId來設計,但爲什麼您需要Cascades?如果共享文檔,刪除地址不應刪除其相關文檔,因爲它可能會被其他實體引用。 – 2012-04-06 14:05:48
但是,如果我想要從任何實體到文檔實體的一對多關係?我怎麼能映射?謝謝。 – 2012-04-10 07:17:40