1

我习惯了 LLBLGen 在基于数据库结构生成对象时给出的布局,这可能会为数据库中的给定“用户”表生成以下类文件:

/EntityClasses/UserEntity.vb
/CollectionClasses/UserCollection.vb

这为数据访问提供了一些基本功能。但是,当您想在此之上实现业务逻辑时,您将如何布局?例如,给定一个可能如下所示的表结构:

 USER
 userId
 firstName
 lastName
 username
 password
 lockedOut

如果您想锁定用户怎么办?你会从表示层调用什么代码?您会实例化 UserEntity 类,然后执行以下操作:

 User = new UserEntity(userId)
 User.lockedOut = true
 User.Save()

或者您会创建一个新类,例如 UserHelper (/BusinessLogic/UserHelper.cs),它可能具有 LockOutUser 函数。这会将代码更改为:

 UH = new UserHelper()
 UH.LockOutUser(userId)

或者您会扩展基本的 UserEntity 类,并创建添加新功能的 UserEntityExt?因此,表示层的代码可能如下所示:

 User = new UserEntityExt(userId)
 User.LockOutUser()

或者......你会完全做其他事情吗?

您的目录/命名空间结构和文件/类命名约定是什么?

4

1 回答 1

1

我认为您正在寻找的是位于域对象之上的服务层。尽管我可能将其称为 UserService 或 UserTasks,但您基本上可以使用第二个选项。通过将此 LockUser 进程封装在一个地方,以后可能会在涉及更多步骤或其他域对象时轻松更改。此外,这将是处理多个数据库调用时实现事务的地方。

于 2008-09-22T21:39:29.823 回答