ASP.Net MVC - 插入和更新

问题描述

我正在尝试插入和更新我的数据库,但我不知道如何在这种情况下使用 sql。在 youtube 上关注 iamtimcorey。https://www.youtube.com/watch?v=bIiEv__QNxw&t=2322s

业务逻辑(EmloyeeProcessor)

public static int CreateEmployee(string Employee_number,string First_name,string Last_name,string Email,string Research_Area,string Position_held,string Highest_qualification,string Department_name)
{
    Employee_Model data = new Employee_Model
        {
            Employee_number = Employee_number,First_name = First_name,Last_name= Last_name,Email = Email,Research_area = Research_Area,Position_held = Position_held,Highest_qualification = Highest_qualification,Department_name = Department_name,};

    string sql = @"DECLARE @var_Department_id int;
                   SELECT @var_Department_id = Department_id 
                   FROM dbo.Departments 
                   WHERE dbo.Departments.Department_name = @Department_name;
                   INSERT INTO dbo.Employee (Employee_number,First_name,Last_name,Email,Research_area,Position_held,Highest_qualification,@var_Department_id)
                   VALUES (@Employee_number,@First_name,@Last_name,@Email,@Research_area,@Position_held,@Highest_qualification,@Department_name);";

    return sqlDataAccess.SaveData(sql,data);
}

Department_name = Department_name 返回已存在于部门表中的字符串。部门名称是表部门中的字符串。我想将该表中匹配的 Department_id 传递给我正在创建的新员工。

Foreign Key Relationship - Department_id

 public static class sqlDataAccess
    {
    public static string GetConnectionString(string connectionName = "DemoDB")
    {
        return ConfigurationManager.ConnectionStrings[connectionName].ConnectionString;
    }

    public static List<T> LoadData<T>(string sql)
    {
        using (IDbConnection cnn = new sqlConnection(GetConnectionString()))
        {
            return cnn.Query<T>(sql).ToList();
        }
    }
    }

解决方法

我认为 SQL 查询应该是这样的:

DECLARE @var_Department_id int;

SELECT @var_Department_id = Department_id 
FROM dbo.Departments 
WHERE dbo.Departments.Department_name = @Department_name;

/*
Final insert into table dbo.Employee. 
*/
INSERT INTO dbo.Employee (
    Employee_number,First_name,Last_name,Email,Research_area,Position_held,Highest_qualification,Department_id --This was @var_Department_id in your query
)
VALUES (
    @Employee_number,@First_name,@Last_name,@Email,@Research_area,@Position_held,@Highest_qualification,@var_Department_id --This was @Department_name in your query
);";