使用Entity Framework 6强制实现两列中的一列不为NULL

时间:2016-04-29 00:23:09

标签: .net entity-framework

我有一张如下表格:

[Table("tblStore")]
public class Store
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public Guid Id { get; set; }

    [Required]
    public string Name { get; set; }

    [Required]
    public string Option1 { get; set; }

    [Required]
    public string Option2 { get; set; }

    [Required]
    public DateTime Created { get; set; }
}

我需要强制指定Option1或Option2(不为null)。有人可以建议使用EF 6做到这一点吗?

1 个答案:

答案 0 :(得分:1)

你可以做一个技巧:将新属性添加到POCO类,这将是Option1Option2串联的结果,并设置为此属性(让我们称之为Options)属性[Required]。当然,我们需要从Option1Option2属性中删除此属性,以便为其分配null值。现在,如果Option1Option2没有值,Options也将为空,并且由于[Required]属性,将引发EF错误,当您尝试将此实体插入数据库时​​:

public class Store
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public Guid Id { get; set; }

    [Required]
    public string Name { get; set; }

    public string Option1 { get; set; }        
    public string Option2 { get; set; }

    [Required]
    public string Options { get { return Option1 + Option2; } private set { } }

    [Required]
    public DateTime Created { get; set; }
}