EF6代码中的唯一多列 [英] Unique multiple column in EF6 codefirst
本文介绍了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屋!
查看全文