Принудително налагане на първичен ключ на изглед

Имам схемата по-долу: въведете описание на изображението тук
Опитах се да създам изглед и направих всичко, за вземете IDStore_CardStore колона NOT NULL, за да го направя като първичен ключ в мен EF обект, но без успех: Целта ми е да избера всичко в таблицата StockCard дори и да не съществува в StockCardStores, но трябва да запазя IDStore_CardStore ненулев и уникален

SELECT  ISNULL(dbo.StockCardsStores.IDStore_CardStore, NEWID()) AS IDStore_CardStore ,
        NULLIF(dbo.StockCard.IDStockCardIndex, NEWID()) AS IDStockCardIndex ,
        dbo.Stores.StoreName ,
        dbo.StockCardsStores.IDPurchaseInvoice ,
        NULLIF(dbo.StockCard.Designation,'')
FROM    dbo.Stores
        INNER JOIN dbo.StockCardsStores ON dbo.Stores.IDStore = dbo.StockCardsStores.IDStore
        RIGHT OUTER JOIN dbo.StockCard ON dbo.StockCardsStores.IDStockCardIndex = dbo.StockCard.IDStockCardIndex

Има ли друго решение!


person HichemSeeSharp    schedule 25.07.2012    source източник


Отговори (1)


Мисля, че IDStore_CardStore вече не може да бъде нула, защото е първичен ключ в таблицата StockCardStores. Може би проблемът е, че IDStore_CardStore може да има дублирани стойности във вашия изглед, което прави невъзможно да бъде първичен ключ на изгледа.

Не знам вашите изисквания, но можете да фалшифицирате първичен ключ за вашия изглед, като направите нещо подобно в заявката:

SELECT  ROW_NUMBER() OVER (ORDER BY dbo.StockCardsStores.IDStore_CardStore DESC) AS Id_PK, ISNULL(dbo.StockCardsStores.IDStore_CardStore, NEWID()) AS IDStore_CardStore ,
        NULLIF(dbo.StockCard.IDStockCardIndex, NEWID()) AS IDStockCardIndex ,
        dbo.Stores.StoreName ,
        dbo.StockCardsStores.IDPurchaseInvoice ,
        NULLIF(dbo.StockCard.Designation,'')
FROM    dbo.Stores
        INNER JOIN dbo.StockCardsStores ON dbo.Stores.IDStore = dbo.StockCardsStores.IDStore
        RIGHT OUTER JOIN dbo.StockCard ON dbo.StockCardsStores.IDStockCardIndex = dbo.StockCard.IDStockCardIndex

И тогава ID_PK може да бъде PK на изгледа в EF.

person Jonathan    schedule 25.07.2012
comment
Проблемът е, че не можах да направя тази заявка като изглед! - person HichemSeeSharp; 25.07.2012
comment
Защо? Каква е грешката, която ви дава EF, когато импортирате изгледа във вашия EF модел? - person Jonathan; 25.07.2012
comment
О, съжалявам, това е грешка, защото пропуснах да добавя псевдоним към NULLIF(dbo.StockCard.Designation,'') - person HichemSeeSharp; 25.07.2012
comment
целта все още не е постигната.. EF обектът се нуждае от ненулева колона, за да стане първичен ключ по подразбиране, но тук Id_PK все още е нула - person HichemSeeSharp; 25.07.2012