好的,这是我的功能(简化了一下):
public int CreateTestRun(int testID)
{
var testRun = new TestRun
{
TestID = testID,
TestName =
TE.Tests.Where(t => t.TestID == testID).Select(t => t.Name).First()
};
TE.TestRuns.AddObject(testRun);
TE.SaveChanges();
return testRun.TestRunID;
}
正如您所看到的,我们通过拉入测试名称以及TestId来对此进行非规范化处理。这是故意的,所以我不想删除它。这工作正常,但它执行数据库查询以获取测试名称,然后执行另一个以执行插入。我想要的是一种在插入上获取测试名称的方法。我知道我可以轻松地使用触发器执行此操作,但我想知道是否有办法在Entity Framework中执行此操作。
答案 0 :(得分:0)
如果不先选择名称,就无法在实体框架中执行此操作。如果你只想插入一个将设置名称也使用数据库触发器或创建存储过程进行测试运行插入并让程序选择名称(如果你想在插入后获得应用程序中的名称,这将是你的选择)。将过程导入模型并将其映射到TestRun实体上的插入操作。