首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >实体框架Id值分配:

实体框架Id值分配:
EN

Stack Overflow用户
提问于 2012-03-26 21:15:16
回答 1查看 682关注 0票数 0

我在db First Model中定义了一个实体:

代码语言:javascript
复制
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; }
}

以及自动生成的控制器,该控制器具有以下创建操作:

代码语言:javascript
复制
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列中插入空值。

以下是一步一步的代码,这个值总是返回一个有效的键。

谢谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-26 21:24:47

默认情况下,EF期望在数据库中生成所有整数主键。因此,修改您的映射并告诉EF您的主键不是自动生成的:

代码语言:javascript
复制
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int IntIdCondicion { get; set; }

如果使用EDMX,则必须在StoreGeneratedPattern属性中将None配置为IntIdCondicion

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9879999

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档