首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >无法将值NULL插入到ASP.NET MVC实体框架的列中

无法将值NULL插入到ASP.NET MVC实体框架的列中
EN

Stack Overflow用户
提问于 2013-11-01 21:04:41
回答 3查看 23.9K关注 0票数 19

在尝试使用此代码时:

代码语言:javascript
复制
var model = new MasterEntities();

var customer = new Customers();
customer.Sessionid = 25641;

model.Customers.Add(customer);
model.SaveChanges();

我得到了:

{“无法将值NULL插入到列'Sessionid',表‘insert .dbo.Column’;列不允许为NULL。插入失败。\r\n该语句已终止。”}

"Sessionid“列实际上是主键,并使用如下所示的键进行标记:

代码语言:javascript
复制
 public class Customers
    {   
        [Key]
        public long Sessionid { get; set; }
        public long? Pers { get; set; }
    }

所以根据this的问题,似乎当属性被标记为[KEY]时,EF会忽略我自己声明的Sessionid,因为它希望数据库赋值。

那么我该如何解决这个问题呢?如果我删除[KEY],我会得到"entity type has no key defined"异常...

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-11-01 21:28:22

我通过像这样添加[DatabaseGenerated(DatabaseGeneratedOption.None)]解决了这个问题:

代码语言:javascript
复制
public class Customers
    {   
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.None)]
        public long Sessionid { get; set; }
        public long? Pers { get; set; }
    }
票数 38
EN

Stack Overflow用户

发布于 2013-11-01 21:08:31

您可以将SQL配置为在插入时自动生成(和自动递增)表的主键。然后只需删除C#中的密钥,您不需要在应用程序中手动设置ID,数据库会为您生成ID。

票数 2
EN

Stack Overflow用户

发布于 2020-04-18 05:52:00

在使用Microsoft SQL Server时,我多次遇到这个问题,我也遵循了同样的方法来解决它。要解决此问题,请确保将身份规范设置为Yes。它看起来是这样的:

这样,列号就会像主键一样自动递增。

如何?:右键单击包含该列的表,选择设计,选择主键,然后在列属性窗口中找到标识规范,并将其设置为

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

https://stackoverflow.com/questions/19727337

复制
相关文章

相似问题

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