EF4 1 企業架構模式 自動對映資料表

2021-06-18 03:47:15 字數 4172 閱讀 9860

在講解之前,先來看看解決方案的架構:

1、在nop.core下的domain裡建立乙個實體category;

using system.data.entity.modelconfiguration;

using nop.core.domain.catalog;

} }

3、在nop.data下建ef上下文介面idbcontext和物件nopobjectcontext:

idbcontext:

using system.collections.generic;

using system.data.entity;

using nop.core;

namespace nop.data

} nopobjectcontext:

using system;

using system.collections.generic;

using system.data;

using system.data.common;

using system.data.entity;

using system.data.entity.infrastructure;

using system.data.entity.modelconfiguration;

using system.linq;

using system.reflection;

using nop.core;

using nop.core.domain.catalog;

namespace nop.data

//public dbsetcategory

///

/// 自動載入所有的資料表對映類並對映到資料庫表(

這個函式是重點,這裡就是替代dbset屬性

)///

///

protected override void onmodelcreating(dbmodelbuilder modelbuilder)

//...or do it manually below. for example,

languagemap());

base.onmodelcreating(modelbuilder); }

///

/// 將乙個實體附加到context上和返回已附加這個實體(if it was already attached)

///

/// tentity

/// entity

/// attached entity

protected virtual tentity attachentitytocontext(tentity entity) where tentity : baseentity, new()

else

} public string createdatabasescript()

///

/// context附加實體

///

///

///

public new idbsetset() where tentity : baseentity

///

/// 執行儲存過程

///

///

///

///

///

public ilistexecutestoredprocedurelist(string commandtext, params object parameters) where tentity : baseentity, new()

} var context = ((iobjectcontextadapter)(this)).objectcontext;

if (!hasoutputparameters)

else

} } }

} 4、在nop.core下的data裡建立乙個介面irepository,**如下:

using system.linq;

namespace nop.core.data

} }

5、在nop.core下的data裡建立乙個實體efrepository.cs,**如下:

using system;

using system.data.entity;

using system.linq;

using nop.core;

using nop.core.data;

namespace nop.data

public t getbyid(object id)

public void insert(t entity)

catch (exception dbex)

error: ", validationerror.propertyname, validationerror.errormessage) + environment.newline;

var fail = new exception(msg, dbex);

fail);

throw fail; }

}public void update(t entity)

catch (exception dbex)

error: ", validationerror.propertyname, validationerror.errormessage);

var fail = new exception(msg, dbex);

fail);

throw fail; }

}public void delete(t entity)

catch (exception dbex)

error: ", validationerror.propertyname, validationerror.errormessage);

var fail = new exception(msg, dbex);

fail);

throw fail; }

}public virtual iqueryabletable

} private idbsetentities

} //todo implement idisposable inte***ce }

}6、在nop.services中建立icategoryservice和categoryservice:

icategoryservice:

using system.collections.generic;

using nop.core;

using nop.core.domain.catalog;

namespace nop.services.catalog

} categoryservice:

using system.collections.generic;

using system.linq;

using system.data.entity;

using nop.core.data;

using nop.core.domain.catalog;

using nop.data;

namespace nop.services.catalog ";

#endregion

#region fields

private readonly irepository_categoryrepository;

//private readonly dbprovide***ctory _dbprovide***ctory;

#endregion

#region ctor

public categoryservice()

#endregion

#region methods

///

/// gets all categories

///

/// a value indicating whether to show hidden records

/// categories

public virtual ilistgetallcategories(bool showhidden = false)

#endregion }

}

《企業應用架構模式》 分層

在系統的分層組織方式下,上層通過介面使用下層定義的各種服務,下層對上層一無所知。每一層都對自己的上層隱藏其下層的細節,因此第4層無需知道第2層的細節。分層的好處 1.可以專注理解某一層,無需過多了解其他層次 2.可以替換某層的具體實現,只要前後提供的服務 介面 相同即可 3.可以將層次間的依賴性減到...

企業架構模式 mdash mdash 分層

一 分層設計的基本概念 在分解複雜的軟體系統時,軟體設計者用的最多的技術之一就是分層。在計算機體系機構中,可以看到,到處都有分層的例子,最為典型的,就是儲存器的層次結構,如圖所示 圖1 計算機儲存器的層次模型 可以看到,儲存器的層次結構是按訪問速度 儲存容量等引數劃分的,不同的層次有不同的職責。cp...

接觸《企業應用架構模式》

國慶七天的長假,過得有些昏昏冉冉。那麼期待的長假,在狠狠飽睡幾天之後居然有點想上班了,唉,真是 j 啊 前天去南山新開業的書城,沒有找到 企業應用架構模式 martin fowler著 呵,今天早上在 china pub 上下了訂單,中午就收到書了。趕快看了前面幾章,真是暢快之極啊!雖然有些東西我也...