我是 MVC 的新手。我有关于外键列的问题。我有两张表,称为公告和部门。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; }
}
基础实体
public class BaseEntity
{
public int Id { get; set; }
[ScaffoldColumn(false)]
public bool IsDeleted { get; set; }
}
我的公告视图中有部门下拉列表,我从中选择一个部门,然后保存。但是在我的公告表中,foreignKey 部分填充了插入到 Departments 表中的新部门 ID。不久,当我保存它时,它在 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?
}
}