EF如何限制用户不访问DbContext并添加聚合根的子级?

发布于 2025-01-07 07:12:33 字数 163 浏览 0 评论 0原文

我使用存储库模式和工作单元。它与我的域模型一起保存在一个单独的项目中。我意识到用户可能很想直接转到 DbContext 并添加聚合根的子级。

我应该标记除存储库和 UnitOfWork 之外的所有内部内容吗?提出这个问题的原因是,我还没有在任何文档、示例甚至我到目前为止所读到的主题中看到这样做。

I use the repository pattern and UnitOfWork. This is kept in a separate project together with my domain model. I realize it might be tempting for users to go to the DbContext directly and add i.e. a child of a aggregate root.

Should I mark everything internal except for repositories and UnitOfWork? The reason for asking is that I've not seen this done in any of the documentation, examples or even the subject addressed in what I've read so far.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

公布 2025-01-14 07:12:34

不要将 DbContext 暴露给域层和 UI 层。您的存储库模式实现是一个有漏洞的抽象。

域层

public interface IUnitOfWork : IDisposable
{
   int SaveChanges();
}


public interface IRepository<TEntity>
{

}

数据访问层

internal class UnitOfWork : DbContext, UnitOfWork
{

}


internal class Repository<TEntity> : IRepository<TEntity>
{

}

Do not expose the DbContext to your domain layer and UI layer. Your repository pattern implementation is a leaky abstraction.

Domain Layer

public interface IUnitOfWork : IDisposable
{
   int SaveChanges();
}


public interface IRepository<TEntity>
{

}

Data Access layer

internal class UnitOfWork : DbContext, UnitOfWork
{

}


internal class Repository<TEntity> : IRepository<TEntity>
{

}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文