使用代码首先,我创建了一个代表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)。 –