在我自己的项目中,我使用 RavenDB。在工作中,我使用 SQL Server 和实体框架(代码优先)。
所以设计领域实体是一个挑战,因为我真的很喜欢 RavenDB 创建以应用程序为中心的、DDD 风格的应用程序的能力,它完全不依赖于数据库实现。
目前,我正在尝试保留一个实体,该实体具有一组 GUID,这些 GUID 引用系统中的其他实体。例如(不是实际的类,而是相同的概念):
public class Thing
{
public Thing()
{
this.VisibleSectionIds = new Collection<Guid>();
}
public Guid Id { get; set; }
public string Name { get; set; }
public ICollection<Guid> VisibleSectionIds { get; set; }
}
使用 RavenDB,我可以在几行代码中将其持久化,而无需重新设计数据库。我什至可以将我的 id 集合设为只读。
人们是否可以建议我可以在 EF 中做类似事情而不将映射属性引入其他实体的方法(这会破坏我的 DDD 方法并可能引入 N+1 问题)。我可以使用 EF 将我的 GUID 集合转换为数据库中的文本数据类型并再次转换回来吗?