我在Entity Framework中有一个关联,但我需要为它添加一个属性/属性。无论如何我在实体框架中执行此操作存在问题(我更喜欢将其保留为关联,但我被迫将其更改为实体以向其添加属性),但在此特定情况下,我想知道是否有更好的方法来做到这一点。
关联表非常简单:
CREATE TABLE EntityA_EntityB (
aId uniqueidentifier,
bId uniqueidentifier
)
客户想要一种方法来优先或订购相关的EntityBs。我认为最好的方法是在此表中添加一个order column(int),结果如下所示:
CREATE TABLE EntityA_EntityB (
aId uniqueidentifier,
bId uniqueidentifier,
order int
)
在这种情况下,所有三列都将构成主键。这似乎没问题,但它为使用该系统的任何代码增加了相当多的复杂性,因为我不得不在EntityA中添加相关的EntityB,而是在EntityA.EntityBs
集合中找到最大的“order”数字,并增加它以添加新的关联。
我可以使订单列成为标识,但无论aId或bId的值是什么,这都会不断增加订单列。当插入一个全新的aId和bId组合时,我想要一个插入0的订单。
有更好的方法吗?
谢谢!
答案 0 :(得分:0)
如果订单整数不必是连续的顺序,则可以将订单整数作为主键。
CREATE TABLE EntityA_EntityB (
order autoincrementing int
aId uniqueidentifier,
bId uniqueidentifier,
)
您(aId,bId,order)上有一个唯一索引,而(bId,aId,order)上有另一个唯一索引。
您只需添加带有Id和bId的行,数据库将处理顺序整数。