我需要将项目中的多对多关系从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 ???
答案 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
进行排序