EF6代码中的唯一多列 [英] Unique multiple column in EF6 codefirst

查看:74
本文介绍了EF6代码中的唯一多列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个类似于以下类别的电子邮件:

I have a class Email that looks like :

public class Email
{
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }
    public string Subject { get; set; }
    public string Body { get; set; }
    public string From { get; set; }
    public DateTime SentOn { get; set; }
    public List<string> To { get; set; }
}

为了确保唯一性,我在上做了一个复合键主题发件人 SentOn

To ensure uniqueness I made a compound key on Subject, From and SentOn

这产生了一个问题,即主题超过128个字符时,验证将失败。因此,我只在其上放置了 [MaxLength] 属性。但是现在它不能成为关键列

This created the problem that when Subject excess 128 characters, validation fails. So I just put a [MaxLength] attribute on it. But now it can't be a key column

我该怎么办?

推荐答案

如果使用的是 EF 6.1 ,则可以使用多列索引功能:

If You are using EF 6.1, you can use Multiple-Column Indexes feature:

public class Email
{
   [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
   public int Id { get; set; }
   [Index("IX_EmailUniqueness", 1, IsUnique = true)]
   public string Subject { get; set; }
   public string Body { get; set; }
   [Index("IX_EmailUniqueness", 2, IsUnique = true)]
   public string From { get; set; }
   [Index("IX_EmailUniqueness", 3, IsUnique = true)]
   public DateTime SentOn { get; set; }
   public List<string> To { get; set; }
}

这篇关于EF6代码中的唯一多列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆