实体框架代码中实体的SortedList优先

时间:2014-09-17 09:54:25

标签: c# entity-framework ef-code-first many-to-many ef-migrations

我需要将项目中的多对多关系从List更改为SortedList。我将Entity Framework 6与Code First和Automatic Migration结合使用。

我们有一个新要求是拥有一个有序列表。我认为这很简单,但似乎迁移不考虑我的修改。

所以我必须选择另一种选择。到目前为止,我有一些想法,但我不确定哪种方法最好。

我可以在AnEntity中添加一个礼仪:

public int order {get; set;}

但我不喜欢这个想法,因为我可以在几个列表中包含AnEntity。

我还可以制作新的对象并将List<AnEntity>更改为List<AnEntityWithOrder>

public abstract class AnEntityWithOrder
{
    public int order {get; set;}
    public AnEntity AnEntity {get; set;}
}

我想知道他们可能是性能问题。

最后我想知道是否有可能告诉EF为该订单创建一个带有附加列的ManyToMany表。似乎也不可能。你知道其他方法让我“模拟”这个SortedList ???

1 个答案:

答案 0 :(得分:3)

假设我了解您的需要,您应该创建一个新实体

class B {
}

class A {
    ICollection<B> Bs {get; set;}
}

modelBuilder.Entity<B>().HasMany(x => x.Bs).WithMany();

class B {
}

class C {
    int Order {get; set;}
    B B {get; set;}
    A A {get; set;}
}

class A {
    ICollection<C> Cs {get; set;}
}

modelBuilder.Entity<C>().HasRequired(x => x.B);
modelBuilder.Entity<C>().HasRequired(x => x.A).WithMany(y => y.Cs);

您现在可以按Cs

Order进行排序