1

我有以下架构:在此处输入图像描述
我尝试创建一个视图并尽一切努力获取IDStore_CardStoreNOT 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

有没有其他的解决方法!

4

1 回答 1

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 可以是他在 EF 中查看的 PK。

于 2012-07-25T08:33:09.830 回答