【发布时间】:2013-10-11 21:33:02
【问题描述】:
我是 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?
}
}
【问题讨论】:
-
将部门附加到当前上下文,然后保存到该部门不是新实体的 tall 实体框架。
-
在上下文中我会做什么?我还在研究它,我通过stackoverflow搜索我发现了一些像我一样的问题,但我仍然无法解决它。我想我在上下文类中添加了 onmodelcreatind 但我不明白我能在这里做什么。
-
在您保存实体的位置显示更多代码。 onModelCreating 用于流畅的映射,并不能帮助您解决这个问题。
标签: asp.net-mvc entity-framework asp.net-mvc-4 ef-code-first