Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 将主键值插入SQL表中同一记录的其他列_Sql Server_Asp.net Mvc 4_Knockout.js_Odata - Fatal编程技术网

Sql server 将主键值插入SQL表中同一记录的其他列

Sql server 将主键值插入SQL表中同一记录的其他列,sql-server,asp.net-mvc-4,knockout.js,odata,Sql Server,Asp.net Mvc 4,Knockout.js,Odata,我正在使用一个数据库应用程序,它通过Asp.NETMVC中的网页将记录添加到表中 我有一个带有以下列的表 Id TermName TermOrder 我正在从网页中插入一个TermName,我希望TermOrder的值与Id的值相同。 例如,我在表中插入一个TermName“Fall”,默认情况下,它会使用标识规范(比如10)添加Id,但会将0添加到TermOrder中,但我希望Id值为10也在TermOrder中 我正在使用knockout Js和Odata插入一条记录 击倒Js self.

我正在使用一个数据库应用程序,它通过Asp.NETMVC中的网页将记录添加到表中

我有一个带有以下列的表

Id
TermName
TermOrder
我正在从网页中插入一个
TermName
,我希望
TermOrder
的值与
Id
的值相同。 例如,我在表中插入一个TermName“Fall”,默认情况下,它会使用标识规范(比如10)添加Id,但会将0添加到TermOrder中,但我希望Id值为10也在TermOrder中

我正在使用knockout Js和Odata插入一条记录

击倒Js

self.addTerm = function (term) {
        var payload = {TermName: this.Term()};
        $.ajax({
            url: '/odata/Terms',
            type: 'POST',
            data: JSON.stringify(payload),
            contentType: 'application/json',
            dataType: 'json'

        });

    }
控制器

protected override Term CreateEntity(Term entity)
        {
            var newTerm = db.Terms.Find(entity.Id);
            if (newTerm == null)
            {
                newTerm = db.Terms.Add(entity);
                entity.TermOrder = entity.Id;
            }
            else
            {
                newTerm = db.Terms.Add(newTerm);
                entity.TermOrder = entity.Id;
            }

            db.SaveChanges();   

            return newTerm;
        }

我可以知道更好的处理方法吗?

一种解决方案是使用触发器:

CREATE TRIGGER trgI_Terms_UpdateTermOrder
ON dbo.Terms
AFTER INSERT
AS
BEGIN
    UPDATE  t
    SET     TermOrder = i.Id -- This will copy ID values in TermOrder
    FROM    dbo.Terms t INNER JOIN inserted i ON t.Id = I.Id
END;
GO

谢谢,我该怎么做呢?但是我不想在TermOrder中插入Id,我想要Min(TermOrder)-1,因为我不能在集合中使用聚合函数