使用HasIndex和没有外键属性的模型在EF6.2中创建索引的正确方法

时间:2018-07-09 12:57:50

标签: c# entity-framework entity-framework-6

我使用EF 6.2创建了此示例,以使用模型的外键创建索引。

我喜欢创建没有外键的模型,以使模型更整洁,这样我就不会创建索引。

那是代码:

[Table("A")]
public class A
{
    [Key]
    public int Id { get; set; }
    public string Description { get; set; }
}
[Table("B")]
public class B 
{
    [Key]
    public int Id { get; set; }

    public virtual A A { get; set; }
}


public class Context : DbContext
{
    public DbSet<A> A { get; set; }
    public DbSet<B> B { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        //Attempt 1
        modelBuilder.Entity<B>().HasIndex(x => x.A).IsUnique();
        //Attempt 2
        modelBuilder.Entity<B>().HasIndex(x => x.A.Id).IsUnique();
        base.OnModelCreating(modelBuilder);
    }


}

两次尝试均因这些错误而出错:

尝试1:

序列中没有匹配的元素

尝试2:

属性表达式'x => x.B.Id'无效。该表达式应表示一个属性:C#:'t => t.MyProperty'VB.Net:'Function(t)t.MyProperty'。指定多个属性时,请使用匿名类型:C#:'t => new {t.MyProperty1,t.MyProperty2}'VB.Net:'Function(t)New with {t.MyProperty1,t.MyProperty2}'。

0 个答案:

没有答案