0

我正在开发一个使用 LINQ-SQL 连接到我的 SQL Server 数据库的 MVC 应用程序。

目前在获取数据时,我将 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 对象是从 User 数据库表映射的。

由于我的域模型与我的 LINQ 对象完全相同,我将这些数据传输到域模型有什么好处,或者我可以在我的视图模型中使用 LINQ 对象,例如:

public User user { get; set; }
public List<Country> countries { get; set; }

使用领域模型有什么好处?这纯粹是为了与数据库 LINQ 对象松散耦合吗?


如果使用域模型有优势,那么如何最好地在我的 MVC 应用程序中构建它们?

它们应该在“Models”文件夹级别完全拆分(例如子文件夹“DomainModels”和“ViewModels”)还是重合(例如“UserEditViewModel.cs”和“UserDomainModel.cs”)。

4

1 回答 1

3

由于我的域模型与我的 LINQ 对象完全相同,我将这些数据传输到域模型有什么好处,或者我可以在我的视图模型中使用 LINQ 对象,例如:

您可以在视图模型中引用域模型,以防它们完全相同。我看不出复制这个逻辑有什么好处,除了在现实世界中它们永远不会相同。您总是有一些特定的视图,例如验证甚至显示标签。拥有纯视图模型的优点是您的应用程序不再依赖于您的数据库结构。您可以轻松地翻转/翻转数据访问技术,而无需修改 UI 部分。我发现这种清晰的分离更易于维护,并且总是倾向于在我的应用程序中使用它。

于 2013-02-01T11:34:55.177 回答