• 1401/05/20

ارتباط چند به چندین :

با سلام خدمت استاد گرامی

استاد من دوتا جدول دارم یکیش جدول واحد اندازه گیری هست و یکی هم جدول تولیدات هست

تو جدول تولیدات دوتا ارتباط داریم یک ارتباط برای واحد تعداد و یک ارتباط برای واحد وزن که برای هر تولید هست من تا حدی که میتونستم ارتباطات رو بررسی کردم که اشتباه نشه و بصورت زیرم نوشتمشون

 

modelBuilder.Entity<UnitProduction>().HasKey(up => new { up.UnitId, up.ProductionSerialCodeId });
modelBuilder.Entity<UnitProduction>().HasOne(u => u.Unit).WithMany(up => up.UnitProductions)
.HasForeignKey(u => u.UnitId);
            
modelBuilder.Entity<UnitProduction>().HasOne(p => p.Production).WithMany(up => up.QtyUnit)
.HasForeignKey(p => p.ProductionSerialCodeId);
            
modelBuilder.Entity<UnitProduction>().HasOne(p => p.Production).WithMany(up => up.WeightUnit)
.HasForeignKey(p => p.ProductionSerialCodeId);

ولی وقتی دستور update-database رو میزنم خطای زیر رو نشون میده.

Introducing FOREIGN KEY constraint 'FK_Productions_Units_WeightUnitId' on table 'Productions' may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints.
Could not create constraint or index. See previous errors.

میدونم اشتباه کردم ولی ننمیدونم کجا این اشتباه رو انجام دادم ممنون میشم یه توضیحی بهم بدید.

  • 1401/05/20
  • ساعت 09:00

سلام دوست من وقتتون بخیر

دوست من باید توی متد OnModelCreating کانتکستون این کد زیر رو قرار بدین

var cascadeFKs = modelBuilder.Model.GetEntityTypes()
                .SelectMany(t => t.GetForeignKeys())
                .Where(fk => !fk.IsOwnership && fk.DeleteBehavior == DeleteBehavior.Casade);

            foreach (var fk in cascadeFKs) fk.DeleteBehavior = DeleteBehavior.Restrict;

  • 1401/05/22
  • ساعت 18:38

ممنونم از لطفتون.

ممنون میشم یه توضیح جزیی درمورد کدتون بگید.


  • 1401/05/23
  • ساعت 01:59

خواهش میکنم دوست من

ببینید این کد ها مربوط میشه به جداولی که با هم relation دارند و رفتار این table ها رو موقع حذف ایتم ازشون مشخص میکنه بیشتر بحث Sql server این مباحث


logo-enamadlogo-samandehi