不确定将模型/实体放置在项目中的位置

时间:2018-12-31 09:59:36

标签: c# model-view-controller design-patterns model

我一直在阅读大量的线程,但仍不确定是否能理解。 首先,我想验证我是否了解“正确”的基础知识,或者至少是开始较小项目的一种好方法。

  • 目前暂无单元测试。
  • 将不存在任何复杂模型(只是大量CRUD操作)

项目结构

Web.MVC-我的MVC应用程序的基本文件夹。

Web.MVC.Views-处理我的实体的演示文稿。

Web.MVC.ViewModels-未使用(但位置正确吗?)

Web.DAL-具有静态方法,CRUD操作的静态类。

Web.DAL.CarDAL-静态类,不想每次都创建一个新的实例,代码更简洁。

Web.DAL.CarDAL.Get()-静态方法,CRUD操作。

我需要同时引用Web.Domain.entitiesWeb.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,它实际上就像是我的实体的副本。

可以随意评论有关上述结构/代码的任何内容,并激发我进行您所说的更改的方式。

还有我的问题

  1. 我的业务规则应该存在于我的模型 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; } 中吗?
  2. 我真的需要ViewModel吗,如果我使用了该技术,我是否会在实体和ViewModel之间进行映射(不是大框架的爱好者)。

  3. 今天我使用“旧方法”填充实体,并以IDataReader作为构造函数的参数,并从DAL中调用,该函数还返回了该实体。如果我想删除对IDataReader的依赖性,我应该使用DI吗?

0 个答案:

没有答案