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值;因此会出现这个报错