我有两个表:[类别],[项目]。它们通过连接表连接:[CategoryAndItem]。它有两个主要关键字段:[CategoryKey],[ItemKey]。外键存在得恰当,实体可以将其拉入并创建连接实体对象的正确导航属性。
基本上每个类别可以有多个项目,而项目可以有多个类别。问题是项目的顺序是按类别指定的,因此特定项目可能在一个类别中排在第三,但在另一个类别中排在第五。
过去,我在连接表中添加了[Sequence]字段,并修改了存储过程来处理它。但是由于Entity正在替换我的存储过程,我需要弄清楚如何让Entity处理序列。
有什么建议吗?
答案 0 :(得分:0)
第一个选项:使用存储过程。您仍然可以将存储过程与实体框架和EF4 makes this easier than the original EF3 implementation did.
一起使用第二个选项:手动处理。你会在插入时知道CategoryAndItem记录应该得到什么序列顺序吗?如果是这样,可能就像将实体的Sequence属性设置为1 + (From item as CategoryAndItem in model.CategoryAndItem select item.Sequence where item.Category = ... ).Max()
一样简单。 (VB代码,对不起:))。
答案 1 :(得分:0)
EntityCollection
是无序的。你可以阅读这个here。当您需要有序列表时,解决方法是投影到POCO演示模型或DTO:
var q = from c in Context.Categories
select new CategoryPresentation
{
Key = c.Key,
Items = from ci in c.CategoryAndItems
orderby ci.SequenceNo
select new ItemPresentation
{
Key = ci.Item.Key,
// etc.
},
// etc.
};