我有一个包含三个项目的ASP.NET MVC解决方案:
SquarkDAL层为数据库中的每个对象都有Linq2SQL类。 BLL引用DAL以在DB上执行业务逻辑。
我的问题是这个......不必在MVC层中引用DAL,我应该如何在MVC层中建模DB的实体?例如,如果我在MVC层中有一个注册表单,那么获取该信息的最佳方法是什么,将其传递给业务层,然后将其传递给数据层?我不希望MVC层知道有关DAL的任何信息。
我发现this answer on another post ...是否普遍认为克服这一点的最佳方法是创建一个传输对象,以便将信息从表示层传递到业务层,这将是然后将信息转换为DAL使用的实体类?
希望这是有道理的。
答案 0 :(得分:0)
使用对象是执行此操作的常用方法。通常DTO(数据传输对象)是具有一组属性的“哑”POCO,并且就像“结构”一样,但是,如果你把它们放在验证和更多逻辑(视图逻辑)上,你有一个视图模型< / strong>并且您可以使用它们来使用控制器。这个应该使用(业务层)模型。
此外,业务层永远不应该引用DAL,因为您的业务模型应该由存储独立。 相反,数据访问层应引用模型,并选择正确的持久性方式。您可以使用Repository模式实现它。
无论如何,有很多关于域驱动设计的书籍。