【发布时间】:2013-01-02 05:34:42
【问题描述】:
我是 MVC 新手,正在尝试以主详细信息表单添加/编辑记录。 masterid 和 detailid 都是由 oracle 在插入记录时生成的。因此,当我尝试调用 DBContext.SaveChanges() 时,我收到外键被违反的错误,并且找不到 id 为“0”的主行。
下面是类的描述。
public class Master
{
public int MasterID { get; set; }
public string MasterTitle { get; set; }
public virtual IList<Detail> Details { get; set; }
}
public class Detail
{
public int DetailID { get; set; }
public int MasterID { get; set; }
public string DetailName { get; set; }
public virtual Master Master { get; set; }
}
控制器代码
[HttpPost]
public ActionResult Create(MASTER masterrecord)
{
if (ModelState.IsValid)
{
db.MASTER.Add(masterrecord);
db.SaveChanges();
}
...
}
只有在记录插入数据库后,主键(masterid)才会得到有意义的值。 context.SaveChanges() 此时尝试使用“0”masterid 保存客户端记录。我搜索了每个地方都找不到任何有用的东西。
虽然首先只保存 Master 表,以便我可以检索 masterid 并使用 DETAIL 模型。但是在任何地方都找不到如何使用 EF5 MVC ASP.NET 任何人都可以指出我提供一些工作样本的正确方向吗? 谢谢 悉达特
【问题讨论】:
-
使用 sqlexpress 工作正常
-
我正在使用 Oracle。如果 PK COLUMN(在我的示例中为 MASTERID)是 = 0,则 PK 是从我使用的行前插入触发器加上检查条件的序列生成
标签: asp.net-mvc entity-framework master-detail