我一直在阅读大量的线程,但仍不确定是否能理解。 首先,我想验证我是否了解“正确”的基础知识,或者至少是开始较小项目的一种好方法。
Web.MVC
-我的MVC应用程序的基本文件夹。
Web.MVC.Views
-处理我的实体的演示文稿。
Web.MVC.ViewModels
-未使用(但位置正确吗?)
Web.DAL
-具有静态方法,CRUD操作的静态类。
Web.DAL.CarDAL
-静态类,不想每次都创建一个新的实例,代码更简洁。
Web.DAL.CarDAL.Get()
-静态方法,CRUD操作。
我需要同时引用Web.Domain.entities
和Web.MVC.Controller
的{{1}}。
我的汽车控制器示例
Web.DAL.CarDAL
我的汽车实体的示例 我在属性上使用了ValidationAttributes,我应该属于我的ViewModel,但是不要认为我需要ViewModel,或者根本不需要一个ViewModel(我只需要将所有内容映射两次)?
public ActionResult Get()
{
var data = Web.DAL.CarDAL.Get();
return View(data);
}
我的DAL课程的例子。
namespace Web.Domain.Entities
{
public class Car
{
public int Id { get; set; }
[Required(ErrorMessage = "RegNumber missing.")]
public string RegNumber { get; set; }
public Car() { }
public Car(IDataReader reader)
{
Id = Helper.GetSafeInt(reader, "Id");
RegNumber = Helper.GetSafeString(reader, "RegNumber");
}
public void BusinessRule1(string regNumber)
{
throw new Exception("BusinessRule1 failed.");
}
}
}
如果开始使用ViewModel,它实际上就像是我的实体的副本。
可以随意评论有关上述结构/代码的任何内容,并激发我进行您所说的更改的方式。
public static List<Car> Get()
{
var data = new List<Car>();
using (var connection = new SqlConnection(GlobalSettings.ConnectionString))
using (var command = new SqlCommand("GetCars", connection))
{
command.CommandType = CommandType.StoredProcedure;
connection.Open();
var reader = command.ExecuteReader();
while (reader.Read())
{
data.Add(new Car(reader));
}
}
return data;
}
中吗?我真的需要ViewModel吗,如果我使用了该技术,我是否会在实体和ViewModel之间进行映射(不是大框架的爱好者)。
今天我使用“旧方法”填充实体,并以IDataReader作为构造函数的参数,并从DAL中调用,该函数还返回了该实体。如果我想删除对IDataReader的依赖性,我应该使用DI吗?