ฉันคิดว่าคุณหมายถึงบางอย่างเหมือน:
public class PostFile {
public Int32 UserId{ get; set; }
public Int32 PostId { get; set; }
public virtual User? User { get; set; }
public virtual Post? Post { get; set; }
}
ของต้นฉบับปัญหาคือการเตือนนั่น C#8 อแนะนำให้รู้จักกับการเป็นมากก explicit กับโพรโทคอล aimcomment-สามารถอ้างอิงถึงชนิด สำหรับรายการที่อยู่เหนือ implementation ไม่ถูกต้ออกจากพวกนี้ความสัมพันธ์ของเราแน่นอตัวเลือกซึ่งคงจะต้องใช้พวกเขา FK ช่องข้อมูล(UserId และ PostId)ไปยังเป็นโพรโทคอล aimcomment-สามารถ. พวกเขาน่าจะเป็น ไม่ เลือกหรอกนะ
หลักตัวเลือกที่จะอยู่อย่างลำบากขนาดนั้น
เป็น)ปิดความสามารถของคุณสมบัติ. (ปิดการใช้งานโพรโทคอล aimcomment-สามารถอ้างอิงในหรับการออกแบบโครงการ)
บี)ถาม"การให้อภัยสำหรับความจริงที่ว่าพวกนี้ไม่ควรเป็นโพรโทคอล aimcomment แต่จะไม่อยู่ที่ถูกต้องรัฐในงานก่อสร้าง (EF จะจัดการพวกเขา)
public class PostFile {
public Int32 UserId{ get; set; }
public Int32 PostId { get; set; }
public virtual User User { get; set; } = null!;
public virtual Post Post { get; set; } = null!;
}
กระตุ้นบ้ารุ่นให้มาร์กแถบนำทาง comment คุณสมบัติของเป็นโพรโทคอล aimcomment-สามารถจะอ้างอิงไปยังแนวโน้มที่จะสาเหตุทุกประเภทของปัญหาเช่นเดียวกับ migrations มันสามารถและจะเริ่มหาคนมาแทนไม่ใช่โพรโทคอล aimcomment-สามารถ FKs กับโพรโทคอล aimcomment-สามารถรอกนะ เพื่อมาร์พวกนี้จะอ้างอิงไปยังเป็นโพรโทคอล aimcomment-สามารถและทำให้ EF มีความสุข:
public class PostFile {
public Int32? UserId{ get; set; }
public Int32? PostId { get; set; }
public virtual User? User { get; set; }
public virtual Post? Post { get; set; }
}
ซึ่งมันเกือบแน่นอนว่า ไม่ใช่ สิ่งที่คุณต้องการของโดเมนหรือแม้แต่ถูกกฏหมายถ้า UserId และ PostId เป็นส่วนหนึ่งของ PK.
เรื่องส่วนตัวฉัน chalking การเปลี่ยนแปลงครั้งใน C#เป็น"ดินแดนของฉัน"คุณเปิดใช้งานในตอนแรกโดยปริยายอย่างเช่นลูกค้าประเมินผลข้างใน EF. :)
ขอบคุณครับท่านลอร์ดหลาย-a-StackOverflow คำถามอยู่นี่เตือนหรือแตกเปลี่ยนแปลงและมาเป็นลูกค้าของ codebases littered ด้วย"!"การให้อภัยป้ายกำกับตาแก่คนที่ไม่ใช่โพรโทคอล aimcomment-สามารถ™à§à±à•à-à/จะอ้างอิงไปยังเป็นผ่านเข้ารหัสกับโพรโทคอล aimcomment-สามารถอ้างอิงรตรวจสอบ