[英]Using Entity Framework, how do I specify a sort on a navagation property?
我有两个表:[类别],[项目]。 它们通过连接表:[CategoryAndItem]连接。 它具有两个主键字段:[CategoryKey],[ItemKey]。 外键适当地存在,并且Entity毫不费力地将其引入并创建连接实体对象的正确导航属性。
基本上,每个类别可以具有多个项目,并且项目可以属于多个类别。 问题在于,按类别指定了项目的顺序,因此特定项目可能在一个类别中排在第三,而在另一个类别中排在第五。
过去,我在联接表中添加了一个[Sequence]字段,并修改了存储过程以对其进行处理。 但是由于Entity正在替换我的存储过程,因此我需要弄清楚如何使Entity处理序列。
有什么建议么?
第一种选择:使用存储过程。 您仍然可以将存储过程与Entity Framework一起使用,并且EF4使其比原始EF3实施更容易。
第二种选择:手动处理。 您会在插入时知道CategoryAndItem记录应获得什么序列顺序吗? 如果是这样,那可能就像将Entity的Sequence属性设置为1 + (From item as CategoryAndItem in model.CategoryAndItem select item.Sequence where item.Category = ... ).Max()
一样简单1 + (From item as CategoryAndItem in model.CategoryAndItem select item.Sequence where item.Category = ... ).Max()
。 (VB代码,对不起:))。
EntityCollection
是无序的。 您可以在这里阅读有关内容。 当您需要有序列表时,解决方法是投影到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.
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.