2016-03-31 31 views
0

benim diyagram benim tabloları oluşturduktan:Varlık Çerçevesi Birebir ilişki?

Database schema Ama nedenini, EF Origin modelinde bu üretecektir bilmem:

public int OriginID { get; set; } 
public virtual Origin Origin { get; set; } 
: Konteyner modelinde

public virtual ICollection<Container> Containers { get; set; } 

ve bağlamda:

modelBuilder.Entity<Origin>() 
      .HasMany(e => e.Containers) 
      .WithRequired(e => e.Origin) 
      .WillCascadeOnDelete(false); 

Ancak bir Kapsayıcı Nesnesi SADECE bir Origin nesnesine sahip olabilir.

nasıl kökenli nesnesi benim nesnenin yalnızca bir örneğini olması koleksiyonunu kaldırabilirim?

aslında benim Restier hizmeti bana kökenlerini alınırken Çünkü sadece BİR kabın koleksiyonu ile itiraz ediyor.

Yani koleksiyon tamamen işe yaramaz.

Herhangi bir fikrin var mı? kökenleri de konteynerlerin bir sürü ile ilgili olabilir çünkü

size

+0

Her iki ana anahtar arasında bir ilişki olmamalıdır? – schlonzo

cevap

0

çok teşekkür ederim - onlar bunu bilmiyorlar. Sahip olduğunuz şey birçok (konteyner) bir (kökeni). Benim kimliğimin 1 ve origin A'nın 1 numaralı kapsayıcısına sahip olduğumu varsayalım. Aynı originID ile kapsayıcı B eklememe ne engel olur? 1'e 1 arasındaki bir ilişkide ısrar ederseniz, her iki modele de anahtar eklemeyi deneyin. Kaynak, yalnızca bir kapsayıcıyla ilgili olduğunu ve bunun tersini bilmelidir.

TD; DR: Kökeni masaya ContainerID ekleyin.

+0

Eh, benim kök tablo ya nullable "konteyner" ya da nullable "akışı" olabilir. Ama sadece bir tane. Bu yüzden verilerimi kolayca almak için 1-1'e ihtiyacım var. Aslına bakarsanız: { "Kimlik": 1, "Akımlar": [ ], "Kapsayıcılar": [ "0" "İsim": "M3", "Genişlik": 0,0 "Süre": 0.0, "yükseklik": 0.0, "Birim": 0.0, "OriginID": 1, "DestinationID": 13, "GörünenAd": "Mercuras" } ] } –

0

i en iyi yolu bire-bir ilişki de yabancı anahtardır birincil anahtara sahip olduğunu eklemeyi düşünüyorum.

(Origin Kimliği, Kapsayıcı kimliği başvuruyor olmalıdır)