EF 更新部分字段,报错,未更新字段是必需的,求大神解惑

时间:2022-12-10 23:53:58

问题是这样子 :这是一个用户信息修改界面

只允许修改用户姓名和用户名(不要纠结用户名能不能修改,这是添加界面粘过来的,还没改好呢,就报错,用户名不是主键)

出现的错误:
EF 更新部分字段,报错,未更新字段是必需的,求大神解惑

打了断点,找到这个Error,的出来某些字段是必需的?这是个什么鬼啊?

大神们,看看咋个回事,被折磨两天了。

EF 更新部分字段,报错,未更新字段是必需的,求大神解惑

17 个解决方案

#1


非空字段未赋值吗?

#2


user_pass字段是不是required.

#3


引用 1 楼 shaoerbao 的回复:
非空字段未赋值吗?


是啊,非空字段就是没有赋值,我只要更新一两个字段啊,看我注释的内容,就是补齐了之后,就不报错了

#4


引用 2 楼 BitCoffee 的回复:
user_pass字段是不是required.


前台的代码里面现在还没有 required的内容呢。仅仅更新一个用户姓名,也只有两个文本框而已,没有密码框

#5


用try  catch 捕获下。
try
{
    // 写数据库
}
catch (DbEntityValidationException dbEx)
{
//看看dbEX错误信息
}

#6


引用 5 楼 kongwei521 的回复:
用try  catch 捕获下。
try
{
    // 写数据库
}
catch (DbEntityValidationException dbEx)
{
//看看dbEX错误信息
}


得到的错误,上面不是有图吗?

#7


引用 5 楼 kongwei521 的回复:
用try  catch 捕获下。
try
{
    // 写数据库
}
catch (DbEntityValidationException dbEx)
{
//看看dbEX错误信息
}

就是那个错误,说是没有更新的字段是必需的

#8


引用 4 楼 yangming19860624 的回复:
Quote: 引用 2 楼 BitCoffee 的回复:

user_pass字段是不是required.


前台的代码里面现在还没有 required的内容呢。仅仅更新一个用户姓名,也只有两个文本框而已,没有密码框

看下Sys_User类里面的user_pass属性是不是限定了required.

#9


引用 8 楼 BitCoffee 的回复:
Quote: 引用 4 楼 yangming19860624 的回复:

Quote: 引用 2 楼 BitCoffee 的回复:

user_pass字段是不是required.


前台的代码里面现在还没有 required的内容呢。仅仅更新一个用户姓名,也只有两个文本框而已,没有密码框

看下Sys_User类里面的user_pass属性是不是限定了required.


没有啊。你说的是哪里?

#10


引用 9 楼 yangming19860624 的回复:
Quote: 引用 8 楼 BitCoffee 的回复:

Quote: 引用 4 楼 yangming19860624 的回复:

Quote: 引用 2 楼 BitCoffee 的回复:

user_pass字段是不是required.


前台的代码里面现在还没有 required的内容呢。仅仅更新一个用户姓名,也只有两个文本框而已,没有密码框

看下Sys_User类里面的user_pass属性是不是限定了required.


没有啊。你说的是哪里?

Sys_User这个实体类的代码贴出来看看.是不是此类里面的user_pass属性上面有[Required]的限定.

#11


EF 更新部分字段,报错,未更新字段是必需的,求大神解惑

问题的根结就在于,前台页面装载的Model只是装载了需要更改的属性,不需要更改的都是Null,才把错啊

#12


看一下你数据库Sys_User表中的user_pass字段是不是设置的不允许为空的。
如果是的话,实体中的属性限定和数据库表中的设置不一致的话,有时可能会出现DbEntityValidationException的异常。

#13


引用 12 楼 BitCoffee 的回复:
看一下你数据库Sys_User表中的user_pass字段是不是设置的不允许为空的。
如果是的话,实体中的属性限定和数据库表中的设置不一致的话,有时可能会出现DbEntityValidationException的异常。


我的QQ:312359647 qq聊聊吧。我都快昏了

#14


引用 13 楼 yangming19860624 的回复:
Quote: 引用 12 楼 BitCoffee 的回复:

看一下你数据库Sys_User表中的user_pass字段是不是设置的不允许为空的。
如果是的话,实体中的属性限定和数据库表中的设置不一致的话,有时可能会出现DbEntityValidationException的异常。


我的QQ:312359647 qq聊聊吧。我都快昏了

...
上班时间上不了QQ.

#15


你也可以先从数据库读取数据,然后给需要修改的字段属性赋值.

#16


数据库里面的数据表字段的限定最好是要和代码中实体的限定要一致.不然有可能会出现异常.

#17


使用部分列更新的方法就不会报错了,不要更新查询出来的数据

#1


非空字段未赋值吗?

#2


user_pass字段是不是required.

#3


引用 1 楼 shaoerbao 的回复:
非空字段未赋值吗?


是啊,非空字段就是没有赋值,我只要更新一两个字段啊,看我注释的内容,就是补齐了之后,就不报错了

#4


引用 2 楼 BitCoffee 的回复:
user_pass字段是不是required.


前台的代码里面现在还没有 required的内容呢。仅仅更新一个用户姓名,也只有两个文本框而已,没有密码框

#5


用try  catch 捕获下。
try
{
    // 写数据库
}
catch (DbEntityValidationException dbEx)
{
//看看dbEX错误信息
}

#6


引用 5 楼 kongwei521 的回复:
用try  catch 捕获下。
try
{
    // 写数据库
}
catch (DbEntityValidationException dbEx)
{
//看看dbEX错误信息
}


得到的错误,上面不是有图吗?

#7


引用 5 楼 kongwei521 的回复:
用try  catch 捕获下。
try
{
    // 写数据库
}
catch (DbEntityValidationException dbEx)
{
//看看dbEX错误信息
}

就是那个错误,说是没有更新的字段是必需的

#8


引用 4 楼 yangming19860624 的回复:
Quote: 引用 2 楼 BitCoffee 的回复:

user_pass字段是不是required.


前台的代码里面现在还没有 required的内容呢。仅仅更新一个用户姓名,也只有两个文本框而已,没有密码框

看下Sys_User类里面的user_pass属性是不是限定了required.

#9


引用 8 楼 BitCoffee 的回复:
Quote: 引用 4 楼 yangming19860624 的回复:

Quote: 引用 2 楼 BitCoffee 的回复:

user_pass字段是不是required.


前台的代码里面现在还没有 required的内容呢。仅仅更新一个用户姓名,也只有两个文本框而已,没有密码框

看下Sys_User类里面的user_pass属性是不是限定了required.


没有啊。你说的是哪里?

#10


引用 9 楼 yangming19860624 的回复:
Quote: 引用 8 楼 BitCoffee 的回复:

Quote: 引用 4 楼 yangming19860624 的回复:

Quote: 引用 2 楼 BitCoffee 的回复:

user_pass字段是不是required.


前台的代码里面现在还没有 required的内容呢。仅仅更新一个用户姓名,也只有两个文本框而已,没有密码框

看下Sys_User类里面的user_pass属性是不是限定了required.


没有啊。你说的是哪里?

Sys_User这个实体类的代码贴出来看看.是不是此类里面的user_pass属性上面有[Required]的限定.

#11


EF 更新部分字段,报错,未更新字段是必需的,求大神解惑

问题的根结就在于,前台页面装载的Model只是装载了需要更改的属性,不需要更改的都是Null,才把错啊

#12


看一下你数据库Sys_User表中的user_pass字段是不是设置的不允许为空的。
如果是的话,实体中的属性限定和数据库表中的设置不一致的话,有时可能会出现DbEntityValidationException的异常。

#13


引用 12 楼 BitCoffee 的回复:
看一下你数据库Sys_User表中的user_pass字段是不是设置的不允许为空的。
如果是的话,实体中的属性限定和数据库表中的设置不一致的话,有时可能会出现DbEntityValidationException的异常。


我的QQ:312359647 qq聊聊吧。我都快昏了

#14


引用 13 楼 yangming19860624 的回复:
Quote: 引用 12 楼 BitCoffee 的回复:

看一下你数据库Sys_User表中的user_pass字段是不是设置的不允许为空的。
如果是的话,实体中的属性限定和数据库表中的设置不一致的话,有时可能会出现DbEntityValidationException的异常。


我的QQ:312359647 qq聊聊吧。我都快昏了

...
上班时间上不了QQ.

#15


你也可以先从数据库读取数据,然后给需要修改的字段属性赋值.

#16


数据库里面的数据表字段的限定最好是要和代码中实体的限定要一致.不然有可能会出现异常.

#17


使用部分列更新的方法就不会报错了,不要更新查询出来的数据