首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >存储每个配置文件的属性/类别排序

存储每个配置文件的属性/类别排序
EN

Stack Overflow用户
提问于 2011-02-25 18:55:22
回答 2查看 183关注 0票数 1

我正在尝试弄清楚如何在两个级别上保存我的排序。我的问题如下:

我有一张有档案的桌子。每个概要文件都有一堆与之关联的属性。属性在配置文件之间共享(多对多)。每个属性都属于一个类别。

不幸的是,我不能发布我的模型的图像,需要另外9个名誉点…

我想要做的是按类别对属性进行分组,并为每个配置文件保存类别和属性的顺序。

示例:

平台: Windows Mac

角色:架构师、开发人员、项目负责人

所以在这里,我希望能够,例如,改变平台的顺序,或者让“角色”显示在“平台”之前。

我在考虑添加一个单独的表,并为每个配置文件保存一个CategoryID:s和AttributeID:s数组。但我想知道有没有更好的方法..。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-11 01:34:40

好的,让我们再试一次:)

我想你的意思是你试图在多对多的关系中保持实体的顺序?

如果是这样的话,使用标准的EF多对多连接似乎是不可能的。相反,您需要在中间添加一个额外的实体,用于存储序列。这并不优雅,但这可能是唯一的方法。

以下是来自Rowan Miller @MS的一些信息:

EF中的

是一个真正的多对多(即没有连接实体),不能包含任何有效负载,并且内容没有排序。

添加连接实体是实现目标的最佳方式。

来源:http://social.msdn.microsoft.com/Forums/en/adonetefx/thread/6fe9f4fc-9979-4885-ad15-8c5ddebb45b1

票数 1
EN

Stack Overflow用户

发布于 2011-03-06 03:08:08

您的意思是要对每个对象中的子对象进行排序?

如果是这样,这里有一些信息可能会有所帮助(尽管它看起来很糟糕):

http://weblogs.asp.net/zeeshanhirani/archive/2008/07/28/sorting-child-collections-in-entity-framework.aspx

我之前写了一篇博文,讨论了如何在DataLoadOptions上使用AssociateWith方法对子集合进行排序,然后再将其加载到内存中。此选项仅在linq to SQL中可用。在实体框架中,为了完成对子集合的排序,必须使用CreateSourceQuery方法。CreateSourceQuery返回一个对象查询,该对象查询被转换为SQL并发送到数据库。因此,如果您希望以不同的方式加载子集合,例如以不同的顺序排序或应用筛选器,则必须访问负责加载子集合的ObjectQuery实例,并在执行ObjectQuery之前修改查询以添加排序。EntityCollection和EntityReference上提供了CreateSourceQuery查询方法。

下面是一个示例,说明了如何做到这一点

代码语言:javascript
复制
var context = new NorthwindEntities();
var cus1 = context.Customers.Single(c => c.CustomerID == "ALFKI");
foreach (var order in cus1.Orders.CreateSourceQuery().OrderBy(o => o.ShipCity)
{
       Console.WriteLine(order.ShipCity);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5116364

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档