在我自己的项目中,我使用RavenDB。在工作中,我使用SQL Server和Entity Framework(代码优先)。
因此,设计域实体是一项挑战,因为我非常喜欢RavenDB创建以应用程序为中心的DDD样式应用程序的能力,它与数据库实现完全无关。
目前我正在尝试持有一个实体,该实体具有引用系统中其他实体的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集合转换为数据库中的文本数据类型并将其转换回来吗?