新手请教,用WebAPI 怎么新增一条MSSQL记录

gzwlj2001 2020-12-14 10:42:32


刚学ASP,好多基础不懂,我有一个BMZL的MSSQL表共三个字段,我的想法是传字段值参数过来,新增一条SQL记录,但红色哪句是错的,我也不知道怎么创建一条记录实例,请教

public IEnumerable<string> GetAdd(String strBMNo,String strBMName,String strMemo )
{
using (LinLongHrmEntities entities = new LinLongHrmEntities())
{

IEnumerable<bmzl> rowBMZL = new IEnumerable<bmzl> (strBMNo,strBMName,strMemo) ;
entities.bmzl.AddRange(rowBMZL);
var intAdd = entities.SaveChanges();
if (intAdd == 1)
{
yield return "部门资料新增完成";
}
else
{
yield return "部门资料新增失败";
}

}

}
...全文
3987 8 打赏 收藏 举报
写回复
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
正怒月神 2020-12-15
引用 2 楼 gzwlj2001 的回复:
[quote=引用 1 楼 正怒月神 的回复:]bmzl 这个类的构造函数发出来看一下。 而不是 IEnumerable<bmzl> 这个类的构造函数,因为这不是你自己的。
bmzl 这是个MSSQL表,就三个字段 部门编号(Nvarchar(8)): bmno 部门名称(Nvarchar(50)):bmname 备注(Nvarchar(20)):memo 我以前是做CS的刚学asp.net很多基础的东西不明白,我在写删除功能控制器时本来用的是entities.bmzl.Remove 方法,但对MSSQL一直无效,所以改用了entities.bmzl.RemoveRange 方法,但这个方法只支持IEnumerable<bmzl> 这个类型,所以我在新增控制器时也用了AddRange,请大侠指点,万分感谢!!!![/quote] remove方法无效,那我估计RemoveRange也是一样。 因为ef有一个跟踪机制。 你可以简单尝试一下,先查找到这条数据,然后在remove

bmzl b=entities.bmzl.find(x=>x.strBMNo==strBMNo);
entities.bmz.remove(b);
entities.savechange();
  • 打赏
  • 举报
回复
gzwlj2001 2020-12-15
引用 1 楼 正怒月神 的回复:
bmzl 这个类的构造函数发出来看一下。
而不是 IEnumerable<bmzl> 这个类的构造函数,因为这不是你自己的。


bmzl 这是个MSSQL表,就三个字段 部门编号(Nvarchar(8)): bmno 部门名称(Nvarchar(50)):bmname 备注(Nvarchar(20)):memo

我以前是做CS的刚学asp.net很多基础的东西不明白,我在写删除功能控制器时本来用的是entities.bmzl.Remove 方法,但对MSSQL一直无效,所以改用了entities.bmzl.RemoveRange 方法,但这个方法只支持IEnumerable<bmzl> 这个类型,所以我在新增控制器时也用了AddRange,请大侠指点,万分感谢!!!!
  • 打赏
  • 举报
回复
正怒月神 2020-12-15
bmzl 这个类的构造函数发出来看一下。 而不是 IEnumerable<bmzl> 这个类的构造函数,因为这不是你自己的。
  • 打赏
  • 举报
回复
gzwlj2001 2020-12-15
终于可以了,自学太难了。
  • 打赏
  • 举报
回复
gzwlj2001 2020-12-15
引用 5 楼 正怒月神 的回复:
不是bmzl bmzlItem = new bmzl(b);
而是entities.bmzl.find(x=>x.strBMNo==strBMNo); 这样的查询出来这条记录。


大侠,删除的功能已经做出来测试可以了,我现在要做的是控制器新增的功能,麻烦帮我看看四楼的代码,谢谢
  • 打赏
  • 举报
回复
gzwlj2001 2020-12-15
我现在要做的新增记录的功能,删除的功能我已经做出来测试可以了
  • 打赏
  • 举报
回复
正怒月神 2020-12-15
引用 4 楼 gzwlj2001 的回复:

bmzl b=entities.bmzl.find(x=>x.strBMNo==strBMNo);
entities.bmz.remove(b);
entities.savechange();
大侠,按你的思路我改了一下,但在执行 var intAdd = entities.SaveChanges(); 时出现 “对一个或多个实体的验证失败” 的错误 我怀疑是我的bmzl实例出了问题,但我不知道该怎么写才对,请帮助,谢谢,代码如下: public IEnumerable<string> GetAdd( String strBMNo,String strBMName,String strMemo) { using (LinLongHrmEntities entities = new LinLongHrmEntities()) { object[] b = { strBMNo, strBMName, strMemo }; bmzl bmzlItem = new bmzl(b); //entities.bmzl.AddRange(rowBMZL); entities.bmzl.Add(bmzlItem); var intAdd = entities.SaveChanges();//出错误: if (intAdd == 1) { yield return "部门资料新增完成"; } else { yield return "部门资料新增失败"; } } }[/quote] 不是bmzl bmzlItem = new bmzl(b); 而是entities.bmzl.find(x=>x.strBMNo==strBMNo); 这样的查询出来这条记录。
  • 打赏
  • 举报
回复
gzwlj2001 2020-12-15

bmzl b=entities.bmzl.find(x=>x.strBMNo==strBMNo);
entities.bmz.remove(b);
entities.savechange();

[/quote]
大侠,按你的思路我改了一下,但在执行 var intAdd = entities.SaveChanges(); 时出现 “对一个或多个实体的验证失败” 的错误 我怀疑是我的bmzl实例出了问题,但我不知道该怎么写才对,请帮助,谢谢,代码如下:
public IEnumerable<string> GetAdd( String strBMNo,String strBMName,String strMemo)
{
using (LinLongHrmEntities entities = new LinLongHrmEntities())
{
object[] b = { strBMNo, strBMName, strMemo };
bmzl bmzlItem = new bmzl(b);


//entities.bmzl.AddRange(rowBMZL);
entities.bmzl.Add(bmzlItem);
var intAdd = entities.SaveChanges();//出错误:
if (intAdd == 1)
{
yield return "部门资料新增完成";
}
else
{

yield return "部门资料新增失败";
}

}

}
  • 打赏
  • 举报
回复
发帖
Web Services
加入

1.2w+

社区成员

.NET技术 Web Services
社区管理员
  • Web Services社区
申请成为版主
帖子事件
创建了帖子
2020-12-14 10:42
社区公告
暂无公告