c# – .NET管理层关系

前端之家收集整理的这篇文章主要介绍了c# – .NET管理层关系前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我实际上是在重新创建项目的默认架构.
在这篇文章中,我希望你不仅可以帮助我,还可以思考,讲述和改进现有方法.这可能是非常有用的挑战.
此默认架构可以与所有人自由共享.
所以这里是描述:
基本上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次插入的模型.
原文链接:https://www.f2er.com/csharp/437148.html

猜你在找的C#相关文章