日期:2014-05-18  浏览次数:20467 次

如何比较优雅的解决实体层与业务逻辑层交叉引用的问题,属三层模式的一个小细节,请教?
我的业务中要用到获取产品 "实时 "库存的逻辑,我在实体层Model建了一个类为Product,并为类建了个字段Stock用来存储此Product的库存;
以下是代码片断:

public   abstract   class   ProductBase
        {
                ......

                private   int   stock   =   0;
                [Description( "库存量 ")]
                public   int   Stock
                {
                        get
                        {
                                return   stock;
                        }
                        set
                        {
                                stock   =   value;
                        }
                }

                ......
        }

代码这样写我觉得有个问题,那就是库存的实时性非常强,而属性Stock的get选择器并没有明确指出如何获取库存,我认为的理想情况是将它改为下面的样子:

                private   int   stock   =   0;
                [Description( "库存量 ")]
                public   string   Stock
                {
                        get
                        {
                                return   BLL.GetProductStock(productID);     //调用BLL层的方法获得库存量
                        }
                        //set
                        //{
                        //         stock   =   value;
                        //}
                }

但现在的问题是:业务逻辑层BLL已层引用了实体层Model,Model层再引用BLL层就会出现交叉引用而出错,请问如何解决这个问题?

------解决方案--------------------
up
------解决方案--------------------
up
------解决方案--------------------
Model层直接写
public int Stock
{
get
{
return stock;
}
}
你怎么会想到Model层引用BLL层?
------解决方案----------