C# MVC EF5表列已由触发器更新,但未返回值

C# MVC EF5表列已由触发器更新,但未返回值,c#,entity-framework-5,C#,Entity Framework 5,我在SQL Server表中定义了一列,并使用After-Insert触发器设置其值。此值是根据最近插入的标识计算的。但是,在保存数据库更改后,我无法在控制器中获取此值 以下是我在控制器中的(伪)代码: var model = new model(); model.column1 = abc; model.column2 = xyz; model.column3 = "CC"; // db object below is a model inheriting DbContext db.ta

我在SQL Server表中定义了一列,并使用After-Insert触发器设置其值。此值是根据最近插入的标识计算的。但是,在保存数据库更改后,我无法在控制器中获取此值

以下是我在控制器中的(伪)代码:

var model = new model();

model.column1 = abc;
model.column2 = xyz;
model.column3 = "CC";

// db object below is a model inheriting DbContext

db.table.Add(model);
db.SaveChanges();

// Do some operations not related to this table

// Try retrieving value of column3 
// which should have been updated by the after insert trigger

var column3Value = db.table.find(model.id).column3;
我在这里错过了EF5的哪些方面

下面是我的触发代码:

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TRIGGER [dbo].[SetColumn3]
ON [dbo].[Table]
AFTER INSERT
AS
BEGIN
    SET NOCOUNT ON
    UPDATE Table
    SET Column3 = RTRIM(inserted.Column3) + CAST(inserted.Id + 100 AS nvarchar(10))
    FROM inserted
    WHERE Table.Id = inserted.Id;
END

Column3
属性必须使用
DatabaseGeneratedOption.Identity
定义,才能在插入过程中获取触发器创建的数据。此声明告诉EF,值是在插入期间在数据库中创建的,它必须查询该值。

是否可以共享触发器代码请将属性定义为映射(或数据批注)中生成的数据库?@RAS-我在上面添加了我的触发器代码。@Ladislav Mrnka-Id列在我的模型中定义,并使用数据注释[Key]和[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]我不希望列3作为标识。也不能将其设置为“计算”,因为我在创建新记录之前设置了一个值,而“插入后”触发器会进一步更新它。我希望将此更新的值返回控制器。EF不支持应用程序和数据库中的值集组合。它只支持完全在应用程序中或完全在数据库中处理的值。使用当前设置,您需要使用另一个上下文再次查询对象(或首先将其从原始上下文中分离)。EF不会将新值拉入现有对象。