Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.NET C#:我应该使用哪种设计模式?为什么?_C#_Asp.net_Design Patterns - Fatal编程技术网

ASP.NET C#:我应该使用哪种设计模式?为什么?

ASP.NET C#:我应该使用哪种设计模式?为什么?,c#,asp.net,design-patterns,C#,Asp.net,Design Patterns,我正在ASP.NET C#中开发一个应用程序,遇到以下情况: 我必须为不同的实体(表)创建一些维护屏幕 这些实体在UI中的行为基本相同:搜索、GetById、保存、创建和GetAll 实体可能具有不同的结构,即不同的属性(字段) 正如我所说的20多个管理屏幕,我可以利用哪种设计模式来最大限度地减少我必须编写的代码量 我想,但我有点困惑如何实施它 我使用的一点技术背景: ASP.NET经典版(n层) LINQ到SQL和DAO对象 SQL Server 2005 对于一组只执行CRUD(创建、读取、

我正在ASP.NET C#中开发一个应用程序,遇到以下情况:

  • 我必须为不同的实体(表)创建一些维护屏幕
  • 这些实体在UI中的行为基本相同:搜索、GetById、保存、创建和GetAll
  • 实体可能具有不同的结构,即不同的属性(字段)
  • 正如我所说的20多个管理屏幕,我可以利用哪种设计模式来最大限度地减少我必须编写的代码量

    我想,但我有点困惑如何实施它

    我使用的一点技术背景:

  • ASP.NET经典版(n层)
  • LINQ到SQL和DAO对象
  • SQL Server 2005

  • 对于一组只执行CRUD(创建、读取、更新、删除)操作且几乎没有业务逻辑的管理屏幕,我很想或多或少地避开设计模式,看看它们。如果您希望尽量减少要编写的代码量,这一点尤其正确。

    这不是一种设计模式。。。但我强烈建议使用动态数据。乔纳森·卡特(Jonathan Carter)对此发表了一些很棒的文章:

    如果你真的只是在做一些基本的事情,比如搜索、GetById、保存、创建和GetAll,我建议你使用存储库。如果做得不对,存储库可能会变得非常糟糕和糟糕,但是如果您主要局限于这组操作,那么您基本上已经用这组操作描述了存储库

    您将希望了解提取额外逻辑的方法,例如搜索,这样您就不会创建重复的逻辑

    只要您确保不让存储库失控,存储库就很好并且可以测试。我给你这个警告只是因为我看到太多人从存储库中创建怪物类

    存储库处理您的对象。它们基本上是处理数据持久性的中介。这种抽象允许您在代码的其余部分隐藏如何持久化数据。在本例中,存储库的实现将使用LinqToSql,因为我相信这就是您所说的您正在使用的


    有很多资源。

    您想要的不是设计模式。您正在寻找带有脚手架的ORM。我已经使用并强烈推荐亚音速-。您可以在此处阅读其脚手架功能:

    我理解,但这不是我们框架的一部分,因此不能使用!好的,在这种情况下,我将查看您的“框架”中已经使用的模式,并使用类似的模式。如果没有类似的模式,您可能希望查看通用存储库模式-例如@Steve。。。那可能就是我要找的。。。我会试试看这是否符合我的要求。。。稍后我会发布结果…tks…我理解,但这不是我们框架的一部分,因此不能使用!对不起,你说的是什么类型的存储库?这个存储库模式是一种创造性的、结构性的还是行为性的模式?我正在寻找能够处理整个过程的东西,从客户机请求到使用Linq2Sql的实际数据库查询……我认为这是行为的。你需要记住的是,你需要在你的层之间进行某种分离。存储库通过阻止UI知道您正在使用Linq2Sql来充当这种分离。