【发布时间】:2016-04-05 12:37:10
【问题描述】:
我计划使用依赖注入重新设计我公司的网络发布平台,因为编码参考开始变得有点复杂。
在我的研究中,我发现了很多关于 MVC 的示例,但我们目前的意图是重新设计 Web 平台的业务逻辑、DAL、Core 等,并尽可能减少 UI 干预。
web平台的架构如下
- SQL 数据库
- DAL (EF6)
- 从 dal (poco) 中分离模型
- 业务逻辑
- CMS 系统
- 前端(网站)
所有独立的项目都有自己的关注点,但在两者之间被大量引用。
在我为抵消大量引用和耦合的研究中,我选择并遵循了以下示例 techbrij blog post
我确实非常了解抽象和依赖注入的概念,并且已经建立了一个测试项目,但遇到了障碍。
在 MVC 中,实例化新数据类 (poco) 由 ActionResult 处理
// POST: /Country/Create
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(Country country)
{
// TODO: Add insert logic here
if (ModelState.IsValid)
{
_CountryService.Create(country);
return RedirectToAction("Index");
}
return View(country);
}
到目前为止,如果我们使用 MVC,那就太好了。但是,如果我使用 Webforms 来插入新记录,我的逻辑表明我需要从模型中实例化一个新类,并用特定值填充其属性并将其传递给 BLL/DAL 或服务层:
public void InsertRecord()
{
Country country = new Country();
country.Name = "Some Country"; // or value from textbox..
_CountryService.Create(country);
}
我的问题是: 关于网络表单,这可以吗?还是我需要抽象模型才能在没有“new”关键字的情况下注入新的数据类
既然使用“new”关键字不会解耦我的数据模型,你会如何做到解耦/ioc/di?
【问题讨论】:
-
我认为您没有正确理解依赖注入,第一个示例中的国家实体尚未注入方法中,它已作为参数传入..它看起来像_countryService 类已被注入。因此,在您的 Web 表单中,只需接受一个参数并注入另一个 _countryService 类。
-
所以你关心的是
new Country()?我假设Country是一个简单的模型,对吧? -
忘了提及你刚刚做了什么。MVC 正在更新国家的实例并作为参数作为已填充的数据类传递。
-
是的@YacoubMassad 我想避免更新simlpe数据类..
-
这是有原因的吗?
标签: c# entity-framework dependency-injection webforms autofac