鑑於MS SQL 2008中的「用戶」表和「登錄」表:如何將計算列添加到我的EF4模型?
CREATE TABLE [dbo].[User_User](
[UserID] [int] IDENTITY(1000,1) NOT NULL,
[UserName] [varchar](63) NOT NULL,
[UserPassword] [varchar](63) NOT NULL
)
CREATE TABLE [dbo].[Util_Login](
[LoginID] [int] IDENTITY(1000,1) NOT NULL,
[User_UserID] [int] NOT NULL, -- FK REFERENCES [dbo].[User_User] ([UserID])
[LoginDate] [datetime] NOT NULL,
)
如何調整我的User_User實體框架模型對象包括「UserLastLogin」列返回MAX( LoginDate)?
我知道我可以創建一個圍繞SQL視圖的EF4型號:
CREATE VIEW [v_User_User]
AS
SELECT
[User_User].*,
(
SELECT MAX(LoginDate)
FROM [Util_Login]
WHERE User_UserID = UserID
) AS UserLastLogin
FROM [User_User]
但就是沒有辦法,我可以只修改User_User模式,包括計算columnn的方法嗎?
編輯:我正在尋找一種方法來獲取用戶或列表<用戶>包括在單個數據庫查詢中的最大(Util.LastLogin)日期。
感謝您的詳細回覆!我看到的一個問題是,它需要一個SQL查詢來爲每個用戶設置LastLoginDate。例如如果我有一個包含50個用戶的列表,這意味着1個查詢來填充列表和50個額外的查詢來填充每個用戶的LastLoginDate。或者我誤解了ObjectMaterialized事件? –
uhleeka
2010-09-21 08:30:18
這是正確的,觸發列表中每個用戶對象的事件。如果這不合乎要求,那麼另一種選擇是急切地加載Util導航屬性,然後在客戶端對其執行Max()。 – 2010-09-21 15:49:31
是的,我看着急切的加載了一點...不會有一個渴望加載的Util返回與用戶相關的所有Util行嗎?所以基本上,一個客戶端的Max()會拋棄除第一行之外的所有內容。 – uhleeka 2010-09-21 18:57:03