EF框架:“无法更新EntitySet“*****”,因为它有一个DefiningQuery,而元素中没有支持当前操作的元素”问题的解决方法

本文介绍使用Entity Framework操作数据库时遇到的主键相关错误及解决方法。包括确保表具有主键、更新模型以及重新配置EF等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 TestDataSourceDataEntities   context = new TestDataSourceDataEntities();
            T_User model = new T_User();
            model.UserID = "Gxw1111";
            model.UserName = "aaaaaaaa";
            model.Userpwd = "123456";
            context.AddToT_User(model);
            context.SaveChanges();//报错地方

 

 

百思不得其解释,最后发现

 1:实体中的表必须有主键(这里指示T_User表中必须有主键),如果没有,会有这样的提示

 2:主键设置好后,运行还是会出现类似问题,那就一个郁闷

       1):方法一先从EF中删除刚设置主键的模型,然后再重新添加到EF中,That's Ok。

       2):如果方法一都没有成功,那么用这个更土的方法:创新创建一个工程,再重新关联EF,这时候这个问题就解决了或者删除*.edmx文件,再重新关联数据库也OK都测试过,完全通过



原因:在用EF进行操作数据库的时候,系统会自动生成SQL语句,例如:

    exec sp_executesql N'insert [dbo].[UserInfo]([UserName], [UserPass], [RegTime], [Email])
values (@0, @1, @2, @3)
select [ID]
from [dbo].[UserInfo]

where @@ROWCOUNT > 0 and [ID] = scope_identity()',N'@0 varchar(20),@1 varchar(20),@2 datetime2(7),

@3 varchar(20)',@0='mm',@1='000000',@2='2018-03-01 09:51:32.1354587',@3='qwe@mmmmmmmm.com'

语句中:@@ROWCOUNT返回上一句语句的受影响行数

  scope_identity 主键的ID值

其中scope_identity是用来获取主键ID值;因此会出现这个报错






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值