我正在使用LINQ-SQL連接到我的SQL Server數據庫的MVC應用程序。使用LINQ時是否需要自定義域模型?
當前在獲取數據時,我將我的LINQ對象的屬性傳遞給域模型,然後在我的視圖模型中創建屬性。
例如我視圖模型可能具有以下屬性:
public Models.UserModel user { get; set; }
public List<Models.CountryModel> countries { get; set; }
我的領域模型具有完全相同的屬性,我的LINQ對象,我複製了這樣的特性:
Models.UserModel user = new Models.UserModel();
user.Username = User.Username;
user.FirstName = User.FirstName;
user.LastName = User.LastName;
其中user
是我的Models.UserModel
對象,而User
是我從用戶數據庫表中映射的LINQ對象。
由於我的領域模型與我的LINQ對象完全一樣,對於我將這些數據轉移到領域模型有沒有什麼優勢,或者我可以在我的視圖模型中使用LINQ對象,比如:
public User user { get; set; }
public List<Country> countries { get; set; }
使用域模型的優點是什麼?這完全是鬆散地與數據庫LINQ對象耦合嗎?
如果使用領域模型有優勢,那麼最好在我的MVC應用程序中構建這些領域?
它們是否應該在「Models」文件夾級別完全分開(例如子文件夾「DomainModels」和「ViewModels」)或重合(如「UserEditViewModel.cs」和「UserDomainModel.cs」)。
那麼我最後的代碼片段是最好的選擇嗎?將對象首先傳遞給自定義域模型沒有好處嗎?我想也許我對使用n層應用程序感到困惑,在這些應用程序中,您將模型圖層傳遞給MVC圖層 – Curt
您的最新更改有助於我理解域模型的用途。如果我要從使用LINQ-SQL切換到使用帶有存儲過程的直接SqlCommands,那麼我需要一個域模型,並且需要更改View Model中的所有引用! – Curt
聽起來像是除非我100%確定我的應用程序總是使用LINQ-SQL,否則我應該使用域模型。你有沒有一個例子來說明如何在我的應用程序和視圖模型中構造這些內容?它們是否應該在「Models」文件夾級別完全分開(例如子文件夾「DomainModels」和「ViewModels」)或重合(如「UserEditViewModel.cs」和「UserDomainModel.cs」)。感謝您的幫助 – Curt