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

时间:2014-06-18 17:10:36

标签: sql-server asp.net-mvc-4 knockout.js odata

我正在使用数据库应用程序,该应用程序通过Asp.Net MVC中的网页向表中添加记录。

我有一个表Terms,其中包含以下列

Id
TermName
TermOrder

我从网页插入TermName,我希望TermOrderId的值相同。 例如,我将TermName“Fall”插入表中,默认情况下使用Identity Specification,例如10添加Id,但将0添加到TermOrder,但我希望Id值10也在TermOrder中。

我正在使用淘汰赛Js和Odata来插入记录

Knockout 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;
        }

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

1 个答案:

答案 0 :(得分:1)

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

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
相关问题