DAO 实现 Dispose

DAO Implements Dispose

我应该在 DAO 标准中实现 Dispose() 吗?

我正在尝试使用 EF 核心和 DAO 标准实现 CRUD,但我不知道是否应该实现以及在何处实现 Dispose

遵循我的代码:

interface IMaintanable<T> : IDisposable
    {
        void Create(T obj);
        T Retrieve(uint key);
        void Update(T obj);
        void Delete(uint key);
    }


  public class DocumentDAO : IMaintanable<Document>
        {
            public void Create(Document obj)
            {
                throw new NotImplementedException();
            }

            public void Delete(uint key)
            {
                throw new NotImplementedException();
            }

            public void Dispose()
            {
                throw new NotImplementedException();
            }

            public Document Retrieve(uint key)
            {
                throw new NotImplementedException();
            }

            public void Update(Document obj)
            {
                throw new NotImplementedException();
            }
        }

简答:否。

DAO 应该是简单的数据容器,包含很少或没有逻辑,当然也不包含资源。他们也不应该实施类似 IMaintainable .

的东西

我知道所有 OOP 教程都充满了以 Save() 和 Show() 方法结尾的业务实体示例,但实际上并非如此。

要了解基本思想,请查看存储库模式。但在使用 EF 时,这通常被认为是多余的。

另请注意,DAO 并不常用于 EF - E 直接代表 business/model/domain 实体。使用 DAO 是可能的,但只会考虑用于非常大的项目。或者当现有数据库不能很好地映射到业务模型时。

您编写的代码不需要是一次性的,因为到目前为止您的 class 没有状态。

但是,一旦您实施了所有这些其他方法,您可能会引入字段,例如 Entity Framework 容器或 SQL 连接,这些字段将需要在您的 class 被处置时被处置。如果是这样,您需要遵循 Microsoft 文档(例如 this and this)以了解正确的对象处理模式。