c# - linq ASP.NET MVC 存储库模式的最佳实践是什么

标签 c# linq entity-framework repository

我是一名初级 Web 开发人员,每天都在努力学习更多东西。

你们使用 Linq 执行 MVC 存储库模式的最佳实践是什么?

我用的那个:

使用 getAll()、getOne()、Update()、Delete() 等 CRUD 方法使用我的 .tt 文件的确切名称创建额外的类,用 Entity Framework 填充我自己的类并返回它,或者使用实体粗略的框架

这是我实际做的一个例子。

这是我的类的 getAll 方法,例如 User

public class CEmployee : CResult
{

    public string name{get;set;}
    public string lastname{get;set;}
    public string address{get;set;}

    //Extracode
    public string Fullname // this code is not in the .tt or database
    {
        get
        {
            return name + lastname;
        }
    }

    public <List>CEmployee getAll()
    {
        try
            {
                var result = (from n in db.Employee 
                                select new CEmployee // this is my own class I fill it using the entity
                                {
                                    name = n.name,
                                    lastname = n.lastname,
                                    address = n.address
                                }).ToList();

                                if (result.Count > 0)
                                {
                                    return result;
                                }
                                else
                                {
                                    return new List<CResult>
                                    {
                                        new CResult
                                        {
                                            has_Error = true,
                                            msg_Error = "Element not found!!!!"
                                        }
                                    }
                                }

            }
        catch
            {
                return Exception();
            }


    }
}

我做所有事情的方式都是返回一个填充的类型,但在网络上我看到人们正常返回实体类型,但我这样做是为了操纵我的响应,如果我想返回额外的信息,我例如,只需要嵌套一个列表,最好的方法是什么,返回 mytype 或返回实体类型?

PD,我也像我的 ViewModel 一样使用这个类。我对我的所有类都这样做。

最佳答案

我目前的一个项目使用依赖注入(inject)来设置 DAL(数据访问层)。我们还使用了 n 层方法;这将存储库的关注点与业务逻辑和前端分开了。

因此,我们将从应用程序中相互链接的 4 个左右的基础项目开始。其中之一处理数据访问,这将是您的存储库;阅读 Ninject 了解更多信息。我们的下一层是我们的域,它包含由 t4 模板(.tt 文件)构建的实体以及我们的 DTO(数据传输对象,它是用于在层之间移动数据的平面对象)。然后我们有一个服务层,服务层或业务逻辑层包含处理 CRUD 操作和任何所需数据操作的服务对象。最后,我们的前端是 Model-View-ViewModel 层,负责处理 Controller 和页面构建。

MVVM 调用服务,服务对象调用数据访问层,Entity Framework 与 Ninject 一起访问数据并在数据跨层移动时将其存储在 DTO 中。

现在这可能看起来过于复杂,具体取决于您正在编写的应用程序,这是为高度可伸缩和可扩展的 Web 应用程序构建的。

关于c# - linq ASP.NET MVC 存储库模式的最佳实践是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22058495/

相关文章:

.NET 多层设计 LINQ

c# - 优化 LINQ 例程

entity-framework - Entity Framework 取消长时间运行的查询

c# - DbContext的第三方实现,如何同时实现IdentityDbContext

c# - 自定义 Linq 扩展语法

c# - 有没有更好的方法来处理 LINQ to SQL 中的验证?

c# - LINQ 的问题 - 有必要添加对不需要的库的引用

c# - 在 Entity Framework 中测试 View 模型

c# - 从 C# 中的句子中修剪太长的单词?

c# - 将以下 SQL 转换为 LINQ 的问题