使用代碼首先,我創建了一個代表Donor
的模型。我使用遷移來生成一個表來存儲所有Donor
對象。我使用註釋來指定主鍵爲我的模型的兩個屬性Name
和TeamId
的組合。實體框架代碼首先使用外鍵作爲複合主鍵的一部分
我向模型添加了一個導航屬性HourlySnapshots
這是一個代表一對多關係的ICollection<HourlySnapshot>
。 (HourlySnapshot
是我創建的另一個域模型。)我運行遷移並生成另一個表來存儲所有對象。正如預期的那樣,它添加了兩列,這些列不在我的模型中,用於存儲由Name
和TeamId
組成的外鍵。
爲了初始化HourlySnapshots表,我在HourlySnapshot
對象中包含了一個傳統的Id
屬性作爲主鍵。我試圖做的是將HourlySnapshots表的主鍵從Id
列切換到外鍵(它是Name
和TeamId
的組合)和另一個屬性HourlySnapshot
稱爲Timestamp
的組合。換句話說,使其成爲三列Name
,TeamId
和Timestamp
的組合。
您能想到一種與Code First做到這一點的方法嗎?我可以輕鬆地通過打開表格定義並在那裏編輯,但我想遵守Code First工作流程,以便遷移包括所有更改。
如果包含模型代碼,人們更容易協助。其次,[代理鍵](https://en.wikipedia.org/wiki/Surrogate_key)使這更容易。但是,如果你想要自然鍵,你可以通過[註釋](https://msdn.microsoft.com/en-us/library/jj591583(v = vs.113).aspx)或[流利地]( https://msdn.microsoft.com/en-us/library/jj591617(v=vs.113).aspx)。 –