3 回答

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

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

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