我有一个三层系统,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/