3 回答

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超6個贊
具有大量參數(shù)的構(gòu)造函數(shù)允許某人實(shí)例化一個對象并在一次構(gòu)造函數(shù)調(diào)用中設(shè)置所有屬性,這通常非常方便:
var request = new Request(buildingId, adId, eventDate, eventStart, eventEnd, timeOfApproval);
但是,一旦定義了自己的構(gòu)造函數(shù),就不再有自動生成的默認(rèn)構(gòu)造函數(shù)(它允許您創(chuàng)建不帶任何參數(shù)的對象),因此必須手動定義。
var request = new Request();
// Later...
request.BuildingId = buildingId;
request.AdId = adId;
request.EventDate = eventDate;
//...etc.
因此這個類有兩個構(gòu)造函數(shù)。

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超10個贊
如果您使用實(shí)體框架,則必須有一個無參數(shù)構(gòu)造函數(shù)。當(dāng)實(shí)體框架從數(shù)據(jù)庫查詢映射到實(shí)體時,使用默認(rèn)構(gòu)造函數(shù)實(shí)例化實(shí)體的新實(shí)例,以使用從數(shù)據(jù)庫檢索的數(shù)據(jù)填充它。
因此,當(dāng)您擁有第二個時,您可以創(chuàng)建一個實(shí)例并設(shè)置所有屬性
new Request(buildingId, adId, ...);
您需要為 EF 添加第一個(無參數(shù)構(gòu)造函數(shù))。它允許創(chuàng)建一個實(shí)例并僅設(shè)置您需要的屬性(或不設(shè)置任何屬性),因?yàn)樗袑傩远加泄苍O(shè)置器
new Request
{
BuildingId = buildingId,
AdId = adId,
...
}

TA貢獻(xiàn)2003條經(jīng)驗(yàn) 獲得超2個贊
無參數(shù)構(gòu)造函數(shù)應(yīng)該是因?yàn)閷?shí)體框架需要它從數(shù)據(jù)庫創(chuàng)建對象。我建議為此使用內(nèi)部范圍。
- 3 回答
- 0 關(guān)注
- 178 瀏覽
添加回答
舉報