私は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?
}
}