Asp.net mvc 存储每个配置文件的属性/类别排序

Asp.net mvc 存储每个配置文件的属性/类别排序,asp.net-mvc,entity-framework,sorting,Asp.net Mvc,Entity Framework,Sorting,我正试图找出如何在两个级别保存我的排序。 我的问题如下: 我有一张有个人资料的桌子。 每个概要文件都有一组与其关联的属性。 属性在配置文件之间共享(多对多)。 每个属性都属于一个类别 不幸的是,我不能发布我的模型的图像,需要另外9个信誉点 我要做的是按类别对属性进行分组,并为每个概要文件保存类别和属性的顺序 例如: 站台: 窗户 苹果 角色: 建筑师 开发商 项目负责人 因此,这里我希望能够,例如,改变平台的顺序,或者让“角色”显示在“平台”之前 我正在考虑添加一个单独的表,并为每个概要文件保存

我正试图找出如何在两个级别保存我的排序。 我的问题如下:

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

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

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

例如:

站台: 窗户 苹果

角色: 建筑师 开发商 项目负责人

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

我正在考虑添加一个单独的表,并为每个概要文件保存CategoryID:s和AttributeID:s的数组。。
但是我想知道是否有更好的方法…

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

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

我之前写了一篇博文,在那里我 讨论了如何使用AssociateWith 方法对DataLoadOptions进行排序 之前SQL server上的子集合 它们被加载到内存中。这 选项仅在linq to中可用 SQL。在实体框架中,为了 完成对孩子的分类 收藏,你必须使用 CreateSourceQuery方法。 CreateSourceQuery返回一个 转换为SQL的objectquery 并发送到数据库。所以如果你 希望您的子集合 以不同的方式加载,例如在 不同的顺序或应用过滤器,而不是 您必须获得对ObjectQuery的访问权 负责 加载子集合并 修改查询以添加订单 在执行ObjectQuery之前。 CreateSourceQuery查询方法为 可在EntityCollection和 实体引用

下面是一个示例,说明如何 那样做


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

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

我之前写了一篇博文,在那里我 讨论了如何使用AssociateWith 方法对DataLoadOptions进行排序 之前SQL server上的子集合 它们被加载到内存中。这 选项仅在linq to中可用 SQL。在实体框架中,为了 完成对孩子的分类 收藏,你必须使用 CreateSourceQuery方法。 CreateSourceQuery返回一个 转换为SQL的objectquery 并发送到数据库。所以如果你 希望您的子集合 以不同的方式加载,例如在 不同的顺序或应用过滤器,而不是 您必须获得对ObjectQuery的访问权 负责 加载子集合并 修改查询以添加订单 在执行ObjectQuery之前。 CreateSourceQuery查询方法为 可在EntityCollection和 实体引用

下面是一个示例,说明如何 那样做

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

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

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

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

在EF中,真正的多对多(即。 如果没有连接实体,则无法 包含任何有效负载和内容 没有订购

添加联接实体是最好的方法 实现你所追求的目标

来源:

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

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

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

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

在EF中,真正的多对多(即。 如果没有连接实体,则无法 包含任何有效负载和内容 没有订购

添加联接实体是最好的方法 实现你所追求的目标


来源:

嗨,谢谢你的回答。不幸的是,这对我来说不行。。我将补充我的问题,更准确地说。添加了一个新的答案,而不是编辑这个答案,因为它偏离了目标几英里。希望我理解正确!嗨,谢谢你的回答。不幸的是,这对我来说不行。。我将补充我的问题,更准确地说。添加了一个新的答案,而不是编辑这个答案,因为它偏离了目标几英里。希望我理解正确!好的,我将考虑添加一个连接实体。。谢谢好的,我将考虑添加一个连接实体。。谢谢
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);
}