DDD領域模型AutoMapper實現DTO(七)

2022-01-15 11:10:22 字數 3634 閱讀 2919

dto的應用場景:

定義產品類:

public class product

public decimal productunitprice

}

定義productdto物件:

public class productdto

public decimal productunitprice

}

定義兩個類:

public class address

public string addresscity

public string addressstreet

}public class customer

public string customermobile

public address customeraddress

}

多個物件的對映類:

public class customerdto

public string mobile

public string state

public string city

public string street

}

對映的**:

;return pdto;}};

return customerdto;

}//簡單

);customer customer = new customer

};return customerdto;}}

在上下文介面中(irepositorycontext)中定義dto的支援:

//新增dto物件

void registercreatedto(tdto tdto, actionprocessdto)

where taggreateroot :

class, iaggreateroot;

void registerupdate(taggreateroot aggreateroot) where taggreateroot :

class, iaggreateroot;

void registerupdatedto(tdto tdto, actionprocessdto) where taggreateroot :

class, iaggreateroot;

倉儲介面的調整:

void create(tdto tdto);

tdto getbyid(guid id);

listgetbycondition(expression> condition);

void update(tdto tdto);

void remove(tdto tdto);

上下文dto定義:(讓ef上下文實現)

public abstract void registercreatedto(tdto tdto, actionprocessdto)

where taggreateroot : class, iaggreateroot;

public abstract void registerupdatedto(tdto tdto, actionprocessdto)

where taggreateroot : class, iaggreateroot;

public abstract void registerremovedto(tdto tdto, actionprocessdto)

where taggreateroot : class, iaggreateroot;

ef上下文中實現:

public override void registercreatedto(tdto tdto, actionprocessdto)

public override void registerupdatedto(tdto tdto, actionprocessdto)

public override void registerremovedto(tdto tdto, actionprocessdto)

efrepository ef 倉儲中的實現:

public void create(tdto tdto)

public listgetbycondition(expression> condition)

}return tdtos;

}public tdto getbyid(guid id)

public void remove(tdto dto)

public void update(tdto dto)

定義產品dto類:

public class productdto

public string name

public string color

public string size

public int amount

public decimal unitprice

public string pcategoryname

public string pdescription

}

在productcategory中實現建構函式:

public productcategory()

在product中實現dto:

public product(irepositoryirepository)

//在呼叫建構函式的時候完成對映的建立

});//返回介面的東西

mapout.constructprojectionusing(p => new productdto);}

得到產品dto 的方法:

/// /// 得到產品dto

///

///

///

public product getproducybyname(string productname)

通過dto 建立product:

/// /// 通過dtocreate

///

///

public void createproduct(productdto productdto)

服務 dto 的建立:

/// /// 服務dto的建立

///

///

public void createproduct(productdto productdto)

///

/// dto的查詢

///

///

///

public productdto getproductdtobyname(string productname)

通過dto建立測試:

[testmethod]

public void createproduct()

[testmethod]

public void getproductdtobyname()

DDD領域驅動設計 應用層,AutoMapper

我們先來寫檢視模型,就是扔給ui層的實體 public class orderviewmodel required errormessage the order name is required minlength 2 maxlength 100 displayname name public st...

DDD中的「領域模型」

在網上搜尋領域模型,有大量的文章。一種是 於最初的傳統軟體開發過程,一種 於領域驅動設計 ddd 在傳統軟體開發中,軟體設計師通常使用uml語言進行系統建模,裡面也在強調領域模型的重要性,這兩者很容易混淆。我給大家找到了一些資料,先來看看傳統軟體開發中,領域模型是什麼。領域模型是什麼?理論派觀點 實...

DDD領域模型閱讀思考

ddd領域模型閱讀思考 常見軟體設計模式注重資料庫和資料表模型,把錶捋出來來以後,彷彿 流程就出來了,但這個只是多個儲存模型,儲存資料的流程,這樣是能完成儲存資料的功能,但是是很底層的設計思路,思路固化以後,會容易寫出麵條串似的業務流程 沒有確定 領域邊界,不是至頂向下,而是從底向上的思考,這樣的 ...