存储过程是可靠地设置服务器修改时间的日期时间字段的唯一方法吗?

发布于 2024-10-26 16:50:42 字数 567 浏览 0 评论 0原文

要求如下:

  • 我们有一个带有 lastModifiedOn 列的表。
  • 我们希望该列真正、可靠地反映数据库中该字段上次更新的 (utc) 时间。
  • 我们希望在使用实体框架修改表的内容时仍然如此。

现在,我们使用 MSL 中的 ModificationFunctionMapping/UpdateFunction 元素和 SSDL 文件中定义的存储过程来完成此操作。

是否有另一种方法可以达到相同的效果,而不必使用存储过程?

编辑: 到最后我还是不够清楚。

当我说“存储过程[已]在 SSDL 文件中定义”时,我的意思是说存储过程的名称是在 SSDL 文件中定义的 - 但问题是我必须在数据库,可以想象,如果存在多个 EF 模型,这可能会产生问题。 现在我已经了解了 SSDL 元素中 元素的用法,我已经能够将自定义 SQL 与其余部分一起放置实体框架模型的 - 它解决了我的问题。

Here are the requirements:

  • We have a table with a lastModifiedOn column.
  • We want that column to really, reliably, reflect the (utc) time at which the field was last updated in the database.
  • We want that to still be the case when modifying the contents of the tables with Entity Framework.

Right now, we are doing that with a ModificationFunctionMapping/UpdateFunction element in the MSL and a stored procedure defined in the SSDL file.

Is there another way of achieving the same effect, without having to use a Stored Procedure?

EDIT:
In the end, I was not clear enough.

When I said that the "stored procedure [was] defined in the SSDL file", I meant to say that the stored procedure's name was defined in the SSDL file - but the problem was that I had to deploy stored procedures with these names on the database, which could conceivably create problems in the event of multiple EF models.
Now that I have understood the use of the <CommandText> element in the SSDL <Function> element, I have been able to put the custom SQL along with the rest of the Entity Framework model - which solved my problem.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

画▽骨i 2024-11-02 16:50:42

您可以使用插入 current_timestamp 的触发器来覆盖 lastModifiedOn 列。我假设数据库服务器是 Sql Server。

You can override the lastModifiedOn column with a trigger inserting current_timestamp. I'm presuming the database server is a Sql Server.

半世蒼涼 2024-11-02 16:50:42

我同意 Filip 的观点,在我们的应用程序中,我们还有一个 LastModifiedOn 列,并且我们在表上创建了一个触发器,每当表中的行更新时,该触发器都会使用当前时间戳更新此列。

问题是您需要在表上创建两个触发器,
1. 更新触发器:每当更新一行时,都会用当前时间戳更新 LastModifiedOn 列。
2. 插入触发器:每当在表中创建一行时,都会在 LastModifiedOn 列中插入当前时间戳。

I agree with Filip, in our application we also have a Column for LastModifiedOn and we have created a trigger on the tables which updates this column with Current timestamp whenever row is updated in the table.

The Thing is you would require to create two triggers on the table,
1. Update Trigger : that would update LastModifiedOn Column with current timestamp whenever a row is updated.
2. Insert Trigger : that would insert current timestamp in LastModifiedOn Column whenever a row is created in the table.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文