加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – .NET管理层关系

发布时间:2020-12-15 04:37:28 所属栏目:百科 来源:网络整理
导读:我实际上是在重新创建项目的默认架构. 在这篇文章中,我希望你不仅可以帮助我,还可以思考,讲述和改进现有方法.这可能是非常有用的挑战. 此默认架构可以与所有人自由共享. 所以这里是描述: 基本上MVC是我们的观点.我们遵循OOP和层编程概念.我们还将使用SQL Se

我实际上是在重新创建项目的默认架构.
在这篇文章中,我希望你不仅可以帮助我,还可以思考,讲述和改进现有方法.这可能是非常有用的挑战.
此默认架构可以与所有人自由共享.
所以这里是描述:
基本上MVC是我们的观点.我们遵循OOP和层编程概念.我们还将使用SQL Server和EF DB First.
所以这是我到目前为止所做的事情:
我在我的解决方案中创建了4个图层:

>域:JUST域类
> DAL:负责访问数据,包含UOW和存储库以及与数据访问相关的验证.
> BL:独特负责业务逻辑和DAL的独特老板.
> UI:这不是那么重要! (甚至它可能是一个控制台应用程序!)

我已经使用通用函数实现BL,如getAll和getById以及crud funcs.these funcs将调用DAL通用函数,这也是准备好的.
现在一个重要的问题是:将DAL函数实现为GENERIC是否正确?
请考虑这种情况:

从UI我们发布模型到动作,在行动中我们称为BL Func(BL.insert(模型)). BL.Insert函数会调用类似DAL.Add(模型)的东西(注意BL将调用DAL一次并告诉它它想要什么).现在,DAL.Add func必须将3条记录插入3个不同的表中(模型从UI层传递).
我认为这不能通过DAL GENERIC funcs来实现.那么,在注意到关注点分离的情况下,实现图层和关系的正确和标准方法是什么?

在我的行动中我会:

[HttpPost]
public ActionResult Insert()
{ 
    Bl.EntityBase.Article.Insert(new Article()); 
    return RedirectToAction("Index");
}

在BL我会:

public void Insert(T obj)
{
    Da.Repository

在我的DAL中,我有:

public virtual void Insert(T entity)
{
    DbEntityEntry dbEntityEntry = Db.Entry(entity);
    if (dbEntityEntry.State != EntityState.Detached)
    {
        dbEntityEntry.State = EntityState.Added;
    }
    else
    {
        Set.Add(entity);
    }
}
最佳答案
如果您通过BL传递给DAL的模型是视图模型,则逻辑将在您的DAL中,否则您不应传递将为3个不同的表执行3次插入的模型.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读