相关疑难解决方法(0)

我应该在DDD应用程序中实现从数据库缓存查找数据的哪一层?

我正在使用DDD设计WCF服务.我有一个域服务层,它调用存储库来创建域对象.存储库使用ADO.Net而不是ORM实现.数据来自使用存储过程的DB.在创建对象时,说一个地址,SP返回一个状态的id.SP不会将地址表与状态表连接.状态由具有id,abbr和name属性的值对象类State表示.当应用程序启动时,状态对象列表可以缓存(使用system.runtime.caching.memorycache),因为它是非易失性数据.通常我有一个LookupDataRepository,它可以从表中检索所有这些查找数据.现在,AddressRepository必须从状态id填充地址的State属性.
伪代码:

class AddressRepository : IAddressRepository
{
    Address GetAddressById(int id)
    {
        // call sp and map from data reader
        Address addr = new Address(id);
        addr.Line = rdr.GetString(1);
        addr.State = // what to do ?, ideally LookupCache.GetState(rdr.GetInt32(2))
    }
}

class State
{
    public int Id;
    public string Abbr;
    public string Name;
    enum StateId {VIC, NSW, WA, SA};
    public static State Victoria = // what to do, ideally LookupCache.GetState(StateId.VIC)
}

// then somewhere in address domain model
if(currentState = State.Victroia)
{
    // …
Run Code Online (Sandbox Code Playgroud)

caching domain-driven-design repository

2
推荐指数
1
解决办法
3917
查看次数

标签 统计

caching ×1

domain-driven-design ×1

repository ×1