C# 在控制器操作ASP.NET Core中执行SQL查询

C# 在控制器操作ASP.NET Core中执行SQL查询,c#,asp.net,asp.net-mvc,asp.net-core,C#,Asp.net,Asp.net Mvc,Asp.net Core,我很难在ASP.NET核心中执行查询。 我需要做的是:我有一个包含各种属性的索引视图,在视图中的行旁边我有一个按钮,单击按钮时它必须执行一个控制器操作,该控制器操作存在于:一个将特定行插入新表,然后删除当前表中的行的查询 我现在是这样做的: 我创建的控制器操作: [HttpPost] public void MutatieButton(int? id) { using (var context = new Context()) using

我很难在ASP.NET核心中执行查询。 我需要做的是:我有一个包含各种属性的索引视图,在视图中的行旁边我有一个按钮,单击按钮时它必须执行一个控制器操作,该控制器操作存在于:一个将特定行插入新表,然后删除当前表中的行的查询

我现在是这样做的:

我创建的控制器操作:

    [HttpPost]
    public void MutatieButton(int? id)
    {
        using (var context = new Context())
        using (var command = context.Database.GetDbConnection().CreateCommand())
        {
            command.CommandText = "INSERT INTO Mutatie SELECT * FROM Moederblad" + "DELETE FROM Moederblad WHERE Id="+ id;
            context.Database.OpenConnection();
            using (var result = command.ExecuteReader())
            {
                return;
            }
        }
    }
视图中的按钮:

 <input id="Mutatie" asp-route-id="@item.Id" type="button" value="Mutatie" onclick="MutatieButton()" />
}

但我似乎不明白。 我读过一些关于工作单元的内容,但如果我理解正确的话,我会感到非常困惑:您有一个DAL,您将所有操作放入其中,如:删除、更新、插入、编辑等,您在控制器中调用这些操作来执行它们


或者有更好的做法吗?

这是哪种奇怪的Sql命令……您应该创建两个Sql命令对象,并分别运行每个命令。对于完整性问题,请使用SqlTransaction对象。如果两个命令都返回成功结果,则提交,否则回滚。我不使用电报。但不管怎样,我不确定还有更多。在
Moederblad
表中创建一个额外的
bit
字段(可能称为“mutated”或其他什么?)。将默认值设置为0,以便在该字段中输入的所有新行都以0开头。然后,如果您想要“母亲”页面的所有数据,那么您可以从Moederblad查询
SELECT*,其中mutated=0
。运行“变异”按钮时,编写
更新Moederblad SET mutated=1,其中ID=?
(?是变异客户的ID)。最后,要获得所有变异客户,则它是(我希望是显而易见的)您从Moederblad中写入
SELECT*,其中mutated=1
。当然,如果您有更多可能的状态,而不仅仅是这两种状态,那么您可能会将其放入一个
int
字段,并有另一个状态表,该列是外键,列出所有可能状态的整数ID和人类可读的描述。这是一个什么样的奇怪的Sql命令…您应该创建两个Sql命令对象,并分别运行每个命令。对于完整性问题,请使用SqlTransaction对象。如果两个命令都返回成功结果,则提交,否则回滚。我不使用电报。但不管怎样,我不确定还有更多。在
Moederblad
表中创建一个额外的
bit
字段(可能称为“mutated”或其他什么?)。将默认值设置为0,以便在该字段中输入的所有新行都以0开头。然后,如果您想要“母亲”页面的所有数据,那么您可以从Moederblad查询
SELECT*,其中mutated=0
。运行“变异”按钮时,编写
更新Moederblad SET mutated=1,其中ID=?
(?是变异客户的ID)。最后,要获得所有变异客户,则它是(我希望是显而易见的)您可以从Moederblad编写
SELECT*,其中mutated=1
。当然,如果您的可能状态多于这两个,那么您可以将其放入
int
字段,并创建另一个状态表,该列为外键,列出所有可能状态的整数ID和人类可读的描述。
function MutatieButton() {
$.ajax({
    type: "POST",
    url: '@Url.Action("Index", "Moederblads")',
    async: true,
    success: function (msg) {
        ServiceSucceeded(msg);
    },
    error: function () {
        return "error";
    }
});