【问题标题】: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),然后使用索引来方便多个值的访问并强制执行唯一约束。

标签: c# asp.net entity-framework orm


【解决方案1】:

据我了解,您正在尝试存储一段时间内的体重波动,并且在相同的确切日期和时间拥有两个不同的体重是没有意义的。考虑到这一点,您只需将属性 [key] 添加到 Weight 类中的 UserID 和 Date 属性即可。

通过这种设计,当您从数据库中查询权重时,您可以按 Date 属性的日期和时间值对它们进行排序,最后一项将是最近的权重度量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多