5

作業中のアプリに 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 で主キーとして使用できます。

前もって感謝します!

4

0 に答える 0