【发布时间】:2021-07-23 20:46:39
【问题描述】:
假设,我有一个具有只读 Id 属性的实体,例如:
public int Id { get; }
然后我有一个持久层,它实现实体存储库并在实体存储到 db 时分配新的 Id 值:
public async Task AddToDb(MyEntity ent) { ... };
现在,这个方法可以通过读取从 Db 中返回一个实体,但我不喜欢发出另一个网络请求(在这种情况下没有并发)。所以我最好将新的 Id 分配给传递的实体。但是Id 是只读的。我正在考虑使用InternalsVisibleTo 属性使持久层对域层“友好”。
好吧,这似乎有点老套,我知道数据库应该是事实的来源。还有其他选择吗?我在做一些完全不必要/错误的事情吗?
【问题讨论】:
-
实体和持久层是否在两个不同的程序集中?否则,InternalsVisibleTo 将无济于事,您只需添加一个内部设置器(对于建议的方法,您无论如何都需要这样做)
-
是的,它们位于不同的程序集中。是的,我使用了
InternalsVisibleTo并使用了内部设置器。
标签: c# .net architecture