我习惯了LLBLGen在基于数据库结构生成对象时给出的布局,这可能会为数据库中给定的“User”表生成以下类文件:
/EntityClasses/UserEntity.vb
/CollectionClasses/UserCollection.vb
这为数据访问提供了一些基本功能。但是,当你想在此基础上实现业务逻辑时,你是如何解决问题的呢?例如,给定一个可能如下所示的表结构:
USER
userId
firstName
lastName
username
password
lockedOut
如果您想要锁定用户怎么办?你会从表示层调用什么代码?你会实例化UserEntity类,并执行:
User = new UserEntity(userId)
User.lockedOut = true
User.Save()
或者您是否会创建一个新类,例如UserHelper(/ Businessity/UserHelper.cs),它可能具有LockOutUser函数。这会将代码更改为:
UH = new UserHelper()
UH.LockOutUser(userId)
或者你会扩展基础UserEntity类,并创建添加新功能的UserEntityExt吗?因此,表示层的代码可能如下所示:
User = new UserEntityExt(userId)
User.LockOutUser()
或者......你会完全做其他事吗?
您的目录/命名空间结构和文件/类命名约定是什么?
答案 0 :(得分:1)
我认为您正在寻找的是一个位于域对象之上的服务层。你基本上可以使用第二个选项,尽管我可以将其称为UserService或UserTasks。通过将此LockUser进程封装在一个位置,以后可能会在涉及更多步骤或其他域对象时更改。此外,这将是处理多个数据库调用时实现事务的地方。