0

我在实体框架中有一个关联,但我需要向它添加一个属性/属性。无论如何,我在实体框架中执行此操作时遇到问题(我更愿意将其保留为关联,但被迫将其更改为实体以便为其添加属性),但在这种特定情况下,我想知道是否有更好的方法来做到这一点。

关联表看起来很简单:

CREATE TABLE EntityA_EntityB (
   aId uniqueidentifier,
   bId uniqueidentifier
)

客户想要一种方法来优先考虑或排序相关的 EntityB。我认为最好的方法是在该表中添加一个订单列(int),使其看起来像这样:

CREATE TABLE EntityA_EntityB (
   aId uniqueidentifier,
   bId uniqueidentifier,
   order int
)

在这种情况下,所有三列都将构成主键。这似乎没问题,但是它给使用这个系统的任何代码增加了相当多的复杂性,因为我必须找到EntityA.EntityBs集合中最大的“订单”号,而不是仅仅将相关的 EntityB 添加到 EntityA 中,并将其递增为了添加一个新的关联。

我可以使 order 列成为一个标识,但这会始终递增 order 列,而不管 aId 或 bId 的值是什么。我想要在插入 aId 和 bId 的全新组合时插入 0 订单的东西。

有没有更好的方法来做到这一点?

谢谢!

4

1 回答 1

0

如果顺序整数不必是连续的顺序,您可以将顺序整数作为主键。

CREATE TABLE EntityA_EntityB (
   order autoincrementing int
   aId uniqueidentifier,
   bId uniqueidentifier,
)  

您将在 (aId, bId, order) 上有一个唯一索引,在 (bId, aId, order) 上有另一个唯一索引。

您只需添加带有 aId 和 bId 的行,数据库将处理订单整数。

于 2013-02-25T14:46:19.420 回答