在我的公司,我们将基于现有的数据库创建一个新的应用程序。在构建新应用程序的过程中,我们将生产环境中使用的两个应用程序(旧的和新的)连接到同一个数据库结构。
这次我们不能对数据库结构进行重大更改,而不需要很多工作来重构旧的应用程序(源代码只是一团糟)
现在我的问题: 很多表都没有自动生成的主键。在旧的应用程序中,创建类似于:
SELECT MAX([id]) as id FROM [tablename];
var new id = id + 1;
为了在新应用程序上获得良好的性能,我们不希望在代码中生成新标识(我们正在使用EntityFramework 6)。相反,我们创建了一个触发器来生成id。
没问题,我无法将生成的id添加到我的entityFramework对象中。刷新上下文没有用,因为数据集上没有其他相同的标准可以用来重新选择它。
我的想法是使用storeGeneratedPatter.Identity将id带回entityFramwork。但是对于那种情况,我需要在触发器内设置@@ IDENTITY变量。
是否有可能做类似的事情:
SET @@IDENTITY = @id
INSTEAD OF INSERT触发器内部?
感谢您的帮助