【发布时间】:2014-06-24 16:11:04
【问题描述】:
将对象保存到数据库后,有什么方法可以“绑定”相关属性?例如: 从 html 表单我发布票对象。它已填充所有属性,并且外键正确。
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(Ticket ticket)
{
if (ModelState.IsValid)
{
db.Tickets.Add(ticket);
db.SaveChanges();
//here i want to use ticket.ResponsibleEmployee property
return RedirectToAction("Index");
}
return View(ticket);
}
public class Ticket
{
public int TicketID { get; set; }
public string Title { get; set; }
[ForeignKey("ResponsibleEmployee")]
public int ResponsibleEmployeeID { get; set; }
public virtual Employee ResponsibleEmployee { get; set; }
}
public class Employee
{
public int EmployeeID { get; set; }
public string LastName { get; set; }
public string FirstName { get; set; }
public virtual IList<Ticket> Tickets { get; set; }
public Employee()
{
this.Tickets = new List<Ticket>();
}
}
有没有简单的方法来获取这些相关的属性?
通过db.Tickets.Find(ticket.TicketID) 保存后,我尝试再次获取属性,但返回的票证没有分配导航属性。我也试过db.Entry(ticket).CurrentValues.SetValues(ticket),但也没用。
【问题讨论】:
-
如果您单步执行您的代码,该票证对象在您将其持久化到上下文之前是否有一个责任雇员?
-
尝试将 [Key] 属性添加到 Ticket.TicketID 和 Employee.EmployeeID 以便 EF 知道您的主键是什么。默认情况下,它会查找 TicketId 和 EmployeeId,但我怀疑这是区分大小写的,它不会自动创建它们。
标签: c# asp.net-mvc entity-framework