我在db First Model中定义了一个实体:
public class Merlin_BR_Condiciones_Item
{
public int IntIdGrupoCondiciones { get; set; }
public string StrCondicion { get; set; }
[Key]
public int IntIdCondicion { get; set; }
public virtual Merlin_BR_Condiciones_Item_Grupos Merlin_BR_Condiciones_Item_Grupos { get; set; }
}以及自动生成的控制器,该控制器具有以下创建操作:
public ActionResult Create(int pIntIdGrupoCondiciones = 0 )
{
ViewBag.IntIdGrupoCondiciones = new SelectList(db.Merlin_BR_Condiciones_Item_Grupos, "IntIdGrupoCondiciones", "StrDescripcionGrupo");
return View();
}
[HttpPost]
public ActionResult Create(Merlin_BR_Condiciones_Item merlin_br_condiciones_item)
{
if (ModelState.IsValid)
{
//================================================================================
// This section add the current key to IntIdCondicion
//================================================================================
var max = from c in db.Merlin_BR_Condiciones_Item
select c;
merlin_br_condiciones_item.IntIdCondicion = max.AsQueryable().Max(x => x.IntIdCondicion) + 1;
//================================================================================
db.Merlin_BR_Condiciones_Item.Add(merlin_br_condiciones_item);
db.SaveChanges();
return RedirectToAction("Index");
}
ViewBag.IntIdGrupoCondiciones = new SelectList(db.Merlin_BR_Condiciones_Item_Grupos, "IntIdGrupoCondiciones", "StrDescripcionGrupo", merlin_br_condiciones_item.IntIdGrupoCondiciones);
return View(merlin_br_condiciones_item);
}该实体在HttPost (创建操作)中手动分配Id列。问题是,一个错误使我无法在IntIdCondicion列中插入空值。
以下是一步一步的代码,这个值总是返回一个有效的键。
谢谢你的帮助。
发布于 2012-03-26 21:24:47
默认情况下,EF期望在数据库中生成所有整数主键。因此,修改您的映射并告诉EF您的主键不是自动生成的:
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int IntIdCondicion { get; set; }如果使用EDMX,则必须在StoreGeneratedPattern属性中将None配置为IntIdCondicion。
https://stackoverflow.com/questions/9879999
复制相似问题