【发布时间】:2017-07-28 16:25:03
【问题描述】:
使用 Code First,我创建了一个代表 Donor 的模型。我使用迁移生成一个表来存储所有Donor 对象。我使用注释将主键指定为模型的两个属性的组合,Name 和 TeamId。
我在模型中添加了一个导航属性,名为HourlySnapshots,它是一个代表一对多关系的ICollection<HourlySnapshot>。 (HourlySnapshot 是我创建的另一个域模型。)我运行了迁移,它生成了另一个表来存储所有HourlySnapshot 对象。正如预期的那样,它添加了两个我的模型中没有的列来存储由Name 和TeamId 组成的外键。
为了初始化 HourlySnapshots 表,我在 HourlySnapshot 对象中包含了一个常规的 Id 属性以用作主键。我想要做的是将 HourlySnapshots 表的主键从 Id 列切换到外键的组合(这是Name 和TeamId 的组合)和HourlySnapshot 的另一个属性叫Timestamp。换句话说,让它由Name、TeamId 和Timestamp 三列组成。
您能想出一种使用 Code First 的方法吗?我可以通过打开表定义并在那里进行编辑来轻松地做到这一点,但我想坚持 Code First 工作流程,以便迁移包含所有更改。
【问题讨论】:
-
如果您包含您的模型代码,人们会更容易提供帮助。其次,surrogate keys 让这一切变得更容易。但是,如果您想要自然键,您可以通过annotations 或fluently 在EF 中指定复合键。
标签: ef-code-first foreign-keys entity-framework-migrations