将插入转换为选择到实体框架

Ahm*_*iri 6 c# sql entity-framework

我有这个 sql 查询,我想将其转换为实体框架

我需要在实体中一次运行中插入不止一行,就像这个查询所做的那样

INSERT INTO dbo.tbllistDepartment
(
    department_sys_id,
    department,
    status,
    client_sys_id,
    lang_sys_id
)
SELECT @siDepartmentSysId,@siDepartment, @iiStatus, 
       @siClientSysId,  lang_sys_id
  FROM tblLanguageSettings 
  WHERE lang_sys_id <> 'Admin001' 
Run Code Online (Sandbox Code Playgroud)

我试过这个,但它只插入一行

public static void Insert(string langSysId, string clientSysId,string name, int status)
    {
        Crs2Model context = new Crs2Model();
        string SysId = MyLibrary.StringCreator.GetSysId();

        tblListDepartment deptObj = new tblListDepartment()
        {
            department_sys_id = SysId,
            client_sys_id = clientSysId,
            lang_sys_id=langSysId,
            department=name,
            status=status
        };

        context.tblListDepartments.Add(deptObj);
        context.SaveChanges();
    }
Run Code Online (Sandbox Code Playgroud)

Tom*_*o32 6

首先,您需要从 tbllistDepartment 表中过滤数据。然后循环遍历这些数据。这是一个示例。你可以参考,我的朋友:

using (DBContext ctx = new DBContext())
{     

  var department = ctx.tbllistDepartment.Where(c => c.lang_sys_id != "Admin001");   

    foreach(var item in department)
{
      var obj = new tbllistDepartment()
      {
         department_sys_id = item.department_sys_id,
         department = item.department,
         status = item.status,
         client_sys_id = item.client_sys_id,
         lang_sys_id = item.lang_sys_id
      }
      ctx.tbllistDepartment.Add(obj);
}   

  // Insert into the database.
  ctx.SaveChanges();                        
}
Run Code Online (Sandbox Code Playgroud)