c# - 在 Mvc ViewModel 中对模型属性执行数据库操作
问题描述
public class CityViewModel
{
public List<City> GetCities { get; set; }
public City CityDetail { get; set; }
}
这是我的 ViewModel,我想知道它是否是直接在 Model 属性上使用数据库操作的好方法。例如
public List<City> GetCities
{
get{
return {some method for getting list from database};
}
set
{
}
}
唯一的要求是我将多次需要该列表,并且我不想继续调用同一行来从任何地方的数据库访问该列表。并且只想每当我创建此视图模型的新实例时,我都可以自动获取该列表。所以是这是一个好方法吗?
解决方案
ViewModel 是 pocos,它们不应该能够自己访问数据库,它们也不应该能够自己访问模型,也不是 viewmodel 的责任来填充自己。理想情况下,您的数据访问层应该将您的模型映射到视图模型和模型中的视图模型
ACityViewModel
应该是City
具有一些更改的模型的副本,并且GetCities
应该是数据访问层中的方法,例如:-
public List<CityViewModel> GetCities()
{
var cities = cityRepository.GetAll();
List<CityViewModel> cityViewModelList = new List<CityViewModel>();
foreach(var city in cities)
{
CityViewModel cityViewModel = new CityViewModel
{
//map your properties
}
cityViewModelList.Add(cityViewModel);
}
return cityViewModelList;
}
然后,每当您需要城市列表时,只需调用即可,GetCities
因此无需重复代码
推荐阅读
- amazon-web-services - AWS Cloudwatch 指标上的数学表达式未提供预期输出
- bash - 文件处理:组合具有不同列数和行数的多个文件
- validation - 如何验证车牌字符/代码点?
- slack - 针对 slack events api 验证 botkit
- java - 我可以根据 Java 中的系统规范生成 UID 吗?
- javafx - 如何将 javafx.scene.layout.StackPane 转换为 javafx.scene.shape.Circle
- android - 从上到下滚动时,Listview 图像会被打乱
- swift - 在 Alamofire DownloadRequest.dataResponseSerializer line + 320 中看到断点崩溃
- android - React-native 找不到包 android.support.v7.app
- sorting - 在 power bi 的下拉列表中按月排序