0

私はMVCの初心者です。外部キー列に問題があります。アナウンスメントと部門という 2 つのテーブルがあります。Department_Id は、アナウンス テーブルの外部キーです。データベース図もチェックしました。これが私のモデルです

  public class Announcement : BaseEntity
{
    public Announcement()
    {
        CreatedDatetime = DateTime.Now;
    }

    public String Title { set; get; }  
    public string ContentText { set; get; } 
    [Display(Name = "Date")]
    [DataType(DataType.DateTime), DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
    public DateTime CreatedDatetime { get; set; } 

    public Department Department { set; get; }    
}

デパートメント

    public class Department : BaseEntity
{

    public string Code { get; set; }
    public string DepartmentName { get; set; }
    public string ShortName { get; set; }
}

BaseEntity

    public class BaseEntity
{
    public int Id { get; set; }
    [ScaffoldColumn(false)]
    public bool IsDeleted { get; set; }
}

アナウンスメント ビューに部門のドロップダウンがあり、そこから 1 つの部門を選択して保存します。しかし、私のアナウンスメントテーブルでは、Departments テーブルに挿入された新しい部門 ID でforeignKey 部分が埋めら​​れます。保存するとすぐに、Departments テーブルに新しい行が挿入され、その ID を使用して、department_id 列に Annoucement テーブルが挿入されます。

これは私の部門のドロップダウンです

@Html.DropDownListFor(x => x.Department.Id, Model.Departments, new {@class = "ui-select",@id="ddlDepartments"})

Model.Departments は

public IEnumerable<SelectListItem> Departments { get; set; }

なぜそのように機能するのか理解できません。何がうまくいかないのか説明してください。さらに情報が必要な場合は、返信します。ありがとうございました。

編集:

探しているうちに何かを見つけます。私はコンテキストクラスで何かをしていると思います。OnModelCreating を追加する必要がありますが、何をすればよいかわかりません。

public class DataContext : DbContext
{
    public DataContext()
        : base("DataContext")
    {

    }

    public IDbSet<Announcement> Announcements { set; get; } 
    public IDbSet<Department> Departments { set; get; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
         //I dont know what to do here?
    }
}
4

1 に答える 1