从外键和日期时间创建复合键
Posted
技术标签:
【中文标题】从外键和日期时间创建复合键【英文标题】:Create composite key from foreign key and DateTime 【发布时间】:2015-07-11 14:20:22 【问题描述】:我刚开始使用 EF。一个用户有 0 个或多个权重,但同一日期最多只有一个。我该如何做到这一点?我想我应该创建一个复合键,但我没有找到要在 Date 属性之前添加的任何合适的属性。 这是我的两个模型:
public class User
public int ID get; set;
public string Name get; set;
public virtual ICollection<Weight> Weights get; set;
public class Weight
[ForeignKey("User")]
[Column(Order=1)]
public int UserID get; set;
public DateTime Date get; set;
public float Value get; set;
【问题讨论】:
一般来说,最好使用唯一的 id 键(不一定是 GUID),然后使用索引来方便多个值的访问并强制执行唯一约束。 【参考方案1】:据我了解,您正在尝试存储一段时间内的体重波动,并且在相同的确切日期和时间拥有两个不同的体重是没有意义的。考虑到这一点,您只需将属性 [key] 添加到 Weight 类中的 UserID 和 Date 属性即可。
通过这种设计,当您从数据库中查询权重时,您可以按 Date 属性的日期和时间值对它们进行排序,最后一项将是最近的权重度量。
【讨论】:
以上是关于从外键和日期时间创建复合键的主要内容,如果未能解决你的问题,请参考以下文章