作業中のアプリに SQL Server 2008 と Entity Framework を使用しています。
EF が必要とするため、SQL Server のすべてのテーブルに主キーを設定しましたが、1 つのビューに問題があります。主キーがないため、ROW_NUMBER() 関数を使用して一意の行識別子を取得しました。その列がNOT NULLとして定義されることを期待していたので、EFで主キーとして使用できましたが、代わりに、列はnull可能です。
これが私の見解です:
CREATE VIEW [dbo].[vw_Action]
AS
SELECT *, ROW_NUMBER() OVER(ORDER BY ActionDate DESC) AS RowID
FROM
(
SELECT User1ID AS UserID, NULL AS FriendID, Object1ID, Object2ID, ActionType, ActionDate
FROM vw_ActionBase
WHERE ActionType = 1
GROUP BY User1ID, Object1ID, Object2ID, ActionType, ActionDate
UNION
SELECT User1ID AS UserID, NULL AS FriendID, Object1ID, Object2ID, ActionType, ActionDate
FROM vw_ActionBase
WHERE ActionType = 2
GROUP BY User1ID, Object1ID, Object2ID, ActionType, ActionDate
UNION
SELECT User1ID AS UserID, NULL AS FriendID, Object1ID, Object2ID, ActionType, ActionDate
FROM vw_ActionBase
WHERE ActionType = 3
GROUP BY User1ID, Object1ID, Object2ID, ActionType, Object1ID, ActionDate
)x
したがって、私の質問は、ROWID 列を NOT NULL として設定する方法です。そのため、EF で主キーとして使用できます。
前もって感謝します!