Asp.net 使用LINQ时是否需要自定义域模型?

Asp.net 使用LINQ时是否需要自定义域模型?,asp.net,sql-server,asp.net-mvc,asp.net-mvc-3,model,Asp.net,Sql Server,Asp.net Mvc,Asp.net Mvc 3,Model,我正在开发一个MVC应用程序,使用LINQ-SQL连接到我的SQL Server数据库 当前,在获取数据时,我将LINQ对象的属性传递给域模型,然后在视图模型中创建域模型的属性 例如,“我的视图模型”可能具有以下属性: public Models.UserModel user { get; set; } public List<Models.CountryModel> countries { get; set; } 其中,user是我的模型。UserModel对象,user是从用户

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

当前,在获取数据时,我将LINQ对象的属性传递给域模型,然后在视图模型中创建域模型的属性

例如,“我的视图模型”可能具有以下属性:

public Models.UserModel user { get; set; }
public List<Models.CountryModel> countries { get; set; }
其中,
user
是我的
模型。UserModel
对象,
user
是从用户数据库表映射的我的LINQ对象

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

public User user { get; set; }
public List<Country> countries { get; set; }
公共用户{get;set;}
公共列表国家{get;set;}
使用域模型的优点是什么?这纯粹是为了与数据库LINQ对象松散耦合吗


如果使用域模型有好处,那么在我的MVC应用程序中构造这些模型的最佳方式是什么

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

由于我的域模型与我的LINQ对象完全相同,是否存在 将此数据传输到域模型的好处,或 我可以在视图模型中使用LINQ对象吗 作为:

您可以在视图模型中引用域模型,以防它们完全相同。我看不出复制这种逻辑有什么好处,除了在现实世界中它们从来都不一样。您总是有一些特定于视图的内容,例如验证,甚至显示标签。使用纯视图模型的优点是,应用程序不再与数据库结构绑定。您可以在不修改UI部分的情况下轻松切换数据访问技术。我发现这种清晰的分离更易于维护,并且总是倾向于在我的应用程序中使用它

由于我的域模型与我的LINQ对象完全相同,是否存在 将此数据传输到域模型的好处,或 我可以在视图模型中使用LINQ对象吗 作为:


您可以在视图模型中引用域模型,以防它们完全相同。我看不出复制这种逻辑有什么好处,除了在现实世界中它们从来都不一样。您总是有一些特定于视图的内容,例如验证,甚至显示标签。使用纯视图模型的优点是,应用程序不再与数据库结构绑定。您可以在不修改UI部分的情况下轻松切换数据访问技术。我发现这种清晰的分离更易于维护,并且总是倾向于在我的应用程序中使用它。

那么我的最后一个代码片段是最佳选择吗?首先将对象传递给自定义域模型没有好处吗?我想,在使用n层应用程序时,可能会有一个模型层将值传递给MVC层。我们的最新更改有助于我理解域模型的用途。如果我要从使用LINQ-SQL切换到对存储过程使用直接SqlCommands,那么我需要一个域模型,并且需要更改视图模型中的所有引用!听起来,除非我100%确定我的应用程序将始终使用LINQ-SQL,否则我应该使用域模型。您是否有一个示例,说明如何在我的应用程序中与视图模型一起构造这些模型?它们应该在“Models”文件夹级别完全分开(例如子文件夹“DomainModels”和“ViewModels”)还是同时分开(例如“UserEditViewModel.cs”和“UserDomainModel.cs”)。感谢您在ASP.NET MVC应用程序的
Models
文件夹中提供的帮助,我只放置了为我的视图专门设计的视图模型。我的域模型位于单独的程序集中,充当数据访问层。在更复杂的应用程序中,我还有一个服务层,它是实际域模型所在的位置。在这种情况下,数据访问层中的LINQ模型只是一些映射到实际域模型的传输对象。然后,MVC应用程序只与服务层和实际域模型对话,这些模型总是映射到它们相应的视图模型。那么,我最后的代码片段是最佳选择吗?首先将对象传递给自定义域模型没有好处吗?我想,在使用n层应用程序时,可能会有一个模型层将值传递给MVC层。我们的最新更改有助于我理解域模型的用途。如果我要从使用LINQ-SQL切换到对存储过程使用直接SqlCommands,那么我需要一个域模型,并且需要更改视图模型中的所有引用!听起来,除非我100%确定我的应用程序将始终使用LINQ-SQL,否则我应该使用域模型。您是否有一个示例,说明如何在我的应用程序中与视图模型一起构造这些模型?它们应该在“Models”文件夹级别完全分开(例如子文件夹“DomainModels”和“ViewModels”)还是同时分开(例如“UserEditViewModel.cs”和“UserDomainModel.cs”)。感谢您在ASP.NET MVC应用程序的
Models
文件夹中提供的帮助,我只放置了为我的视图专门设计的视图模型。我的域模型位于单独的程序集中,充当数据访问层。在更复杂的应用程序中,我还有一个服务层,它是实际域模型所在的位置。在这种情况下,数据访问层中的LINQ模型只是一些映射到实际域模型的传输对象。然后,MVC应用程序只与服务层和始终映射到相应视图模型的真实域模型进行通信
public User user { get; set; }
public List<Country> countries { get; set; }