Domain driven design 使用值对象验证实体的性能问题

Domain driven design 使用值对象验证实体的性能问题,domain-driven-design,value-objects,Domain Driven Design,Value Objects,我有下面的值对象代码,它通过一些昂贵的数据库操作验证CustCode 公共类CustCode:ValueObject { 私有客户代码(字符串代码){Value=code;} 公共静态结果创建(字符串代码) { if(string.IsNullOrWhiteSpace(代码)) 返回结果。失败(“代码不应为空”); //验证该值对数据库是否仍然有效。代价高昂且速度缓慢 如果(!ValidateDB(code))//或web api调用 返回结果。失败(“数据库验证失败”); 返回Result.S

我有下面的值对象代码,它通过一些昂贵的数据库操作验证CustCode

公共类CustCode:ValueObject
{
私有客户代码(字符串代码){Value=code;}
公共静态结果创建(字符串代码)
{
if(string.IsNullOrWhiteSpace(代码))
返回结果。失败(“代码不应为空”);
//验证该值对数据库是否仍然有效。代价高昂且速度缓慢
如果(!ValidateDB(code))//或web api调用
返回结果。失败(“数据库验证失败”);
返回Result.Success(新客户代码(code));
}
公共字符串值{get;}
//其他方法省略了。。。
}
公共类MyEntity
{
CustCode CustCode{get;}
....
当只有一个或几个实体实例具有该类型时,它可以正常工作。但是,对于像
GetAll()
这样返回大量实体类型的方法,它会变得非常缓慢

public异步IAsyncEnumerable GetAll()
{
弦线;
使用var sr=File.OpenText(_config.FileName);
while((line=wait sr.ReadLineAsync())!=null)
{
yield返回新的MyEntity(CustCode.Create(line.Value);//多次调用CustCode.Create
}
}

由于文件中的数据在保存之前已经过验证,因此实际上不需要再次验证。是否应该创建另一个不验证要创建的值的
函数?DDD惯用的方法是什么?

我通常尝试不让域调用来检索任何其他数据。是否应该传入域需要执行其工作的所有内容

由于值对象表示不可变状态,因此,一旦成功创建了值,就可以正常工作。为此,可能可以在集成/应用程序“层”中执行初始数据库验证,然后仅使用提供的值创建
CustCode