1

私は以下のスキーマを持っています:ここに画像の説明を入力してください
ビューを作成しようとし、それをEFエンティティの主キーにするためにIDStore_CardStore列を取得するためにすべてをNOT NULL行いましたが、成功しませんでした:私の目的は、テーブル内のすべてを選択するStockCardことです。に存在しますが、nullで一意ではない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テーブルの主キーであるため、すでにnullにすることはできないと思います。おそらく問題は、IDStore_CardStoreがビュー内の値を複製し、ビューの主キーになることができない可能性があることです。

要件はわかりませんが、uouは、クエリで次のようなものを作成するビューの主キーを偽造できます。

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 に答える