Kullanıcı, İşveren, Adaylar ve İş, bir işveren birden fazla iş oluşturabilir ve her iş sadece bir işverene sahip olabilir, bir aday birçok iş için başvurabilir ve her iş birden çok uygulamalı üyeye sahip olabilir.FOREIGN KEY kısıtlaması, döngülere veya çoklu kaskat yollarına neden olabilir. Herhangi bir eylemi silme
Yani ilişki şu şekildedir:
ben bir işveren silerseniz, ilgili tüm işlerini silmek için gidiyor ve kullanıcı gelen bir anında, varlık çerçevesi kodu ilk yaklaşım kullanıyorum Ben aday silerseniz veritabanı ve bu kullanıcı silmek için gidiyor:
modelBuilder.Entity<Employer>()
.HasRequired(e => e.User)
.WithOptional(e => e.Employer).WillCascadeOnDelete();
//member is candidate
modelBuilder.Entity<Member>()
.HasRequired(e => e.User)
.WithOptional(e => e.Member).WillCascadeOnDelete();
modelBuilder.Entity<Employer>()
.HasMany(a => a.Jobs)
.WithRequired(b => b.Employer)
.WillCascadeOnDelete();
Her şey kullanarak veritabanı adaylar ve iş arasında birçok ilişki birçok belirtmek ve güncelleme dışında çalışıyor "güncelleme veritabanı 'MemberJobMap' yabancı anahtar kısıtlaması masaya 'FK_dbo.MemberJobMap_dbo.Jobs_JobId' Tanıtımı
döngüleri veya çoklu kaskad yolları neden olabilir:", bana bu hata veriyor. EYLEM YAPMAK ÜZERİNDE AÇIK veya EYLEM OLMADAN AÇIKLAMAK seçin veya diğer ÖNSÖZ ANAHTAR kısıtlamalarını değiştirin. Kısıtlama oluşturulamadı. Önceki hataları görün. İşte
Ben birçok ilişki birçok belirtilmiş nasıl:
modelBuilder.Entity<Member>()
.HasMany(m => m.Jobs)
.WithMany(j => j.Members)
.Map(c =>
{
c.MapLeftKey("Id");
c.MapRightKey("JobId");
c.ToTable("MemberJobMap");
});
ve ben göçü eklediğinizde:
CreateTable(
"dbo.MemberJobMap",
c => new
{
Id = c.String(nullable: false, maxLength: 128),
JobId = c.Int(nullable: false),
})
.PrimaryKey(t => new { t.Id, t.JobId })
.ForeignKey("dbo.Members", t => t.Id, cascadeDelete: true)
.ForeignKey("dbo.Jobs", t => t.JobId, cascadeDelete: true)
.Index(t => t.Id)
.Index(t => t.JobId);
Ben false cascadeDelete değiştirmeyi denedim
ama sildiğinizde o bana hata veriyor iş başvurusu yapan veya başvurulan adaylarla bir işi silmeye çalıştığımda aday.
Bu hata nasıl giderilir? Böylece:
Bir iş kaldırılır- , bu, ilişkili candidatejobmap tablo satırları kaldırmak için gidiyor başka bir tablo aday kaldırılır
- etkilemeksizin ilişkili candidatejobmap tablo satırları kaldırmak için gidiyor ve herhangi diğer tablo
- etkilemeksizin kullanıcı tablo satırı diğer tüm belirtilmiş kaskad eylemi silmek tutarken aynı ben i tasarlamak istiyorum
sorunu gizlediniz, çağlayan silme, birleştirme tablosunun her iki tarafından da çalışmalıdır. Bu, ER M'deki bir hata gibi kokmuyor ya da kullandığınız şekilde bir hata yapıyor. – Jasen
@Jasen kaskad benim için çalışmıyor Her iki taraftan silmek çünkü bana ben – Mindless
Evet, tek bir çok-çok" varlık ile daha basit kurulum var sorulan hata veriyor, açıklamak ve ne zaman aynı hatayı alıyorum Lütfen Birden çok ilişkiyi aynı anda çağlayanı silme işlemini etkinleştirmeye çalışıyorum, bunun sadece bir SQL Server sınırlaması olduğunu düşünüyorum. –