Dev*_*r23 5 .net entity-framework poco repository-pattern
我想实现典型的三层架构.我目前的方法如下
或者你认为最好将存储库放在BLL中并直接从我说的buttoneventhandler访问它们?
希望你能为黑暗带来一些光明
我们在DAL有回购.BLL通过接口引用存储库 - 因此存储库与DAL绑定,但与BLL分离.我不知道为什么存储库不能直接在BLL中.我们在DAL中得到它们,因为我们没有在其中加入任何逻辑.然后,我们在BLL中有"管理器",它包装存储库并处理特定于实体的逻辑.
FWIW我们实际上有一个泛型Repository(Of IEntity)并使用unity来根据需要实例化相应的存储库 - 它非常紧凑且非常优雅.我们所有的POCO实体实施IEntity含有Id,CreatedDate等等这是所有我们的实体.当您需要一般地处理任何类型的实体时,这会带来一些其他好处 - CreatedDate在CreateInstance()调用时由存储库ModifiedDate设置,当它提交具有状态的实体时由上下文本身设置.Modified
我们将实体保留在一个单独的项目中--DAL需要能够引用它们,就像BLL一样.你不希望它们在DAL中,因为交换DAL会导致问题.你不能把它们放在BLL中,或者你得到一个循环引用.实体的配置可以存在于DAL中,因为它是特定于数据源的.
我们试图坚持BLL接受基元和返回实体.小心将实体保留在UI中太长时间,尤其是在Web应用程序中,因为当您将实体返回到BLL进行处理时(即,在会话中存储的请求或类似内容),您可能在DAL下具有不同的上下文可以导致从上下文中附加/分离实体的各种乐趣,并失去一些好处,如更改跟踪.
希望有所帮助,但如果您想要任何澄清,请告诉我