我正在使用数据库应用程序,该应用程序通过Asp.Net MVC中的网页向表中添加记录。
我有一个表Terms
,其中包含以下列
Id
TermName
TermOrder
我从网页插入TermName
,我希望TermOrder
与Id
的值相同。
例如,我将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;
}
我可以知道更好的处理方法吗?
答案 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