首页 新闻 会员 周边 捐助

EF6 db.savechange()时报更新条目时出错。有关详细信息,请参阅内部异常。

0
悬赏园豆:10 [已关闭问题] 关闭于 2015-04-01 11:52

在项目中使用EF6,在添加数据时报"更新条目时出错。有关详细信息,请参阅内部异常。"的错误,查看详细的错误里面提示如下:

InnerException = {"不能将值 NULL 插入列 'ID',表 'FrameDB.dbo.City';列不允许有 Null 值。INSERT 失败。\r\n语句已终止。"}

方法代码:

public int Insert(City city)
{
r model = context.City.Add(city);
context.SaveChanges();
return model.ID;
}

赋值代码:

City city = new City();
city.ID = new Random().Next(1000);
city.CityName = "wuhan";
city.ZipCode = "430010";

CityBLL bll = new CityBLL();
int r= bll.Insert(city);

数据库:(SQL SERVER)

ID    int   primary key,

CityName nvarchar(50),

ZipCode nvarchar(50)

 

麻烦大神们帮忙看看具体是什么原因导致的错误,先行谢过!

问题补充:

补充说明:采用的是BD FIRST

beggar_的主页 beggar_ | 初学一级 | 园豆:10
提问于:2015-04-01 00:01
< >
分享
所有回答(5)
0

错误说的很清楚啊。

xiaocong_soft | 园豆:556 (小虾三级) | 2015-04-01 08:41

看也明白错误的提示,但我添加的对象是有值的,但到数据库就为空,问题主要是在这里

支持(0) 反对(0) beggar_ | 园豆:10 (初学一级) | 2015-04-01 08:45

@beggar_: 你跟踪调试一下看看ID的值,是不是你bll里面写了什么?

支持(0) 反对(0) xiaocong_soft | 园豆:556 (小虾三级) | 2015-04-01 08:46

@xiaocong_soft: 调试看过了,到Add方法返回给result的都有值,是正常的!但savechange就不行

支持(0) 反对(0) beggar_ | 园豆:10 (初学一级) | 2015-04-01 08:53

@beggar_: 看看你的代码

支持(0) 反对(0) xiaocong_soft | 园豆:556 (小虾三级) | 2015-04-01 08:57
1

ID是主键?没定义默认值吧?如果没定义则需要设置。

519740105 | 园豆:5810 (大侠五级) | 2015-04-01 09:14
1

问题解决了,主要注意以下几点:

一、数据库表中一定要有主键,否则会报一个更新数据为0行的错

二、数据库的主键如果是int类型的,一定要是自增的,但是设置双主键时,一定要有一个是自增的

三、主键如果是字符串类型的可以在程序中给值

beggar_ | 园豆:10 (初学一级) | 2015-04-01 11:47
0

我改了一张表的约束关系然后 重新生成了这张表的实体类型,但是和这张表关联的view 却没有重新生成,所以就报以上错误。重新生成下相关的view 就好了

nod22 | 园豆:206 (菜鸟二级) | 2016-01-27 16:58
0

int类型的也可以设置为主键,也可以不设置为自增长,只要绑定一个默认值((-1))就可以了。

James·wang | 园豆:88 (初学一级) | 2018-05-24 11:52
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册