sql-server - 在数据库中创建新行后,我应该返回该行的主键还是数据传输对象?

标签 sql-server database design-patterns database-design

我有一个三层系统,SQL Server 后端,手写数据访问层,并使用存储过程。

我有一个名为 EventTable 的表。每一行都是一个“事件”。事件有一个主键和一个开始日期。

CREATE TABLE EventTable
(
  ID INT IDENTITY(100,1) PRIMARY KEY,
  StartTime DateTime NOT NULL
)

有一个名为EventTable_Create 的存储过程。顺便问一下,create方法按照写的好吗?

CREATE PROCEDURE Event_Create
    @NewID INT OUT
AS
    DECLARE @START DATETIME
    SELECT @START = getdate() 
    INSERT INTO EventTable VALUES(@START, NULL)
    SELECT @NewID = MAX(ID) FROM EventTable
GO

数据访问层向调用者返回一个 int,但它是否应该返回一个名为 Event 的数据传输对象的实例?如果是这样,我是否应该同时返回新创建的 ID 和开始时间,以便数据访问层可以创建事件传输对象?

最佳答案

这完全取决于您通过数据访问在域层中需要什么。由于您是通过从域层传递信息来创建此内容,因此我假设您已经在域逻辑中拥有大部分事件信息。在这种情况下,您所需要的只是一个 ID,将其填充为事件对象的一部分(如果您有)。

因此,这完全取决于您在域层中需要什么以及出于什么原因。

关于sql-server - 在数据库中创建新行后,我应该返回该行的主键还是数据传输对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/809738/

相关文章:

php - 如何在 Dreamweaver 中设置 PHP 测试服务器?

php - CakePHP 即时切换数据库(使用相同的数据源)?

java - 如何从 Java 备份 mysql 数据库?

java - 用于从中央 Controller 委派任务的调度程序模式

oop - 何时使用抽象工厂模式?

sql-server - 搜索包含另一个字符串中的所有单词的 varchar 字段

c# - 使用 ADO.NET 从 SQL Server 获取数据

sql-server - AdventureWorks 无法创建 ado.net 实体数据模型

database - 给定一个查询,您如何知道要添加哪些索引?

c++ - 同一基类的两个派生对象如何通信?