C#:在哪里放"save()"方法?

use*_*415 1 c# oop methods

我有一个问题,这里有一个示例
我有一个Model类:Stock


    public class Stock{
        //some properties, stock name, stock code;
        public String StockName{
            get,set
        }
        public String StockCode{
            get,set
        }
    }
Run Code Online (Sandbox Code Playgroud)

我还有一个服务类StockService,它将从数据库加载数据并创建库存并设置属性值.


    public class StockService:IStockService{
        public Stock CreateStockByStockCode(string stockCode){
            Stock stock = new Stock();
            //load the data from db and set the stock's properties.
            stock.StockName = ...
            stock.StockCode = ...
        }
    }
Run Code Online (Sandbox Code Playgroud)

所以,我的问题,我有一个"Save()"方法,我应该放在哪里,
Option1:把它放在Stock类中,


    public class Stock{
        public void Save(){
            //use the repository to save into db.
        }
    }
Run Code Online (Sandbox Code Playgroud)

Option2:把它放在服务类中


    public class StockService:IStockService{
        public void Save(Stock stock){
            //use the repository to save into db.
        }
    } 
Run Code Online (Sandbox Code Playgroud)


我认为对于选项1:股票似乎有点聪明,它可以自我保存,更多的是面向ojbect.对于option2,我看到很多人都使用这种模式.你有什么想法?

Pat*_*ick 8

将Save()方法放入服务将阻止Stock类需要任何有关数据库结构的知识.将Load()和Save()放入两个不同的类中可能也会让人感到困惑.


jer*_*enh 5

您可能希望阅读Active Record模式Repository模式.你在这里介于两者之间.

Active Record被认为是"更简单",而Repository更"纯粹",因为您可以更好地分离关注点(您的实体不需要关注数据访问).