سلام 2 تا تیبل داریم یکی Permission و Respondent که نحوه ارتباط یک به چند است یک Respondent به چند Permission
خوب ارتباط از طریق Ef Core است و
کد کلاس respondent
[Table("Respondent")]
[Serializable]
public class Respondent : IQuickSearchObject, IUIObject
{
#region Constractor
public Respondent()
{
//چون ریکرسیو ایجاد میکنه نباید تو کانسترکتور نیو بشه
// AccessGroupItem = new AccessGroup();
//PersonItem = new Person();
TradeFundID = -1;
IsAdmin = false; //for all user except for مدیر سیستم
//MyAccountingConfig = new AccountingConfiguration();
Permissions = new List<Permission>();
}
#endregion
#region Property
[DatabaseGeneratedAttribute(DatabaseGeneratedOption .Identity)]
[Key, ForeignKey("ID")]
public long ID { get; set; }
[Column("password")]
public string Password { get; set; }
[Column("accessGroupID")]
// [NotMapped]
public long? accessGroupID { get; set; }
[NotMapped]
public virtual AccessGroup AccessGroupItem { get; set; }
[Column("personID")]
public long? personID { get; set; }
[NotMapped]
public virtual Person PersonItem { get; set; }
[NotMapped]
public virtual List<Permission> Permissions { get; set; }
#endregion
}
کد کلاس Permission
[Table("Permission")]
[Serializable]
public class Permission : IQuickSearchObject
{
#region Constractor
public Permission()
{
//چون ریکرسیو ایجاد میکنه نباید تو کانسترکتور نیو بشه
this.AccessCodeItem = new AccessCode();
this.AccessGroupItem = new AccessGroup();
this.RespondentItem = new Respondent();
}
#region Peroperty
[DatabaseGeneratedAttribute(DatabaseGeneratedOption .Identity)]
[Key, ForeignKey("ID")]
public long ID { get; set; }
[ForeignKey("RespondentID")]
[Column("RespondentID")]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public long? RespondentID { get; set; }
//{
// get { return RespondentItem.ID; }
// set { RespondentItem.ID = value; }
//}
[NotMapped]
public virtual Respondent RespondentItem { get; set; }
#endregion
}
کد ریلیشن بین این ها
modelBuilder.Entity<Respondent>()
.HasMany(e => e.Permissions)
.WithOne(e => e.RespondentItem)
.HasForeignKey(e => e.RespondentID)
.OnDelete(DeleteBehavior.NoAction);
dddd.png
Aaaa.png