C# 是否有一种设计模式或方法可以从UI中删除Db上的记录?

C# 是否有一种设计模式或方法可以从UI中删除Db上的记录?,c#,design-patterns,corresponding-records,delete-record,C#,Design Patterns,Corresponding Records,Delete Record,当从数据库中的用户界面删除记录时,是否有任何常用的方法、设计模式或模型 基本上,应该采取以下哪些步骤以及何时(如验证、删除主记录、出现错误时如何处理) 与引用约束冲突 如何处理异常或在故障时通知用户(如何将BL故障信息传输到UI;通过捕获异常或某些报告对象等)以及或多或少与删除上下文有关的最常见问题。删除记录时,可以执行以下操作: 检查该项在数据库中是否仍处于同步状态。(此步骤可能是可选的,具体取决于场景) 执行删除 如果删除成功,则更新gui;如果失败,则捕获异常,不更新/更改gui 您在业务

当从数据库中的用户界面删除记录时,是否有任何常用的方法、设计模式或模型

基本上,应该采取以下哪些步骤以及何时(如验证、删除主记录、出现错误时如何处理)

与引用约束冲突


如何处理异常或在故障时通知用户(如何将BL故障信息传输到UI;通过捕获异常或某些报告对象等)以及或多或少与删除上下文有关的最常见问题。

删除记录时,可以执行以下操作:

  • 检查该项在数据库中是否仍处于同步状态。(此步骤可能是可选的,具体取决于场景)
  • 执行删除
  • 如果删除成功,则更新gui;如果失败,则捕获异常,不更新/更改gui

  • 您在业务层中使用的是什么?您在代码中使用的是什么API来检索和存储数据?

    删除记录时,您可以执行以下几项操作:

  • 检查该项在数据库中是否仍处于同步状态。(此步骤可能是可选的,具体取决于场景)
  • 执行删除
  • 如果删除成功,则更新gui;如果失败,则捕获异常,不更新/更改gui

  • 您的业务层使用的是什么?您使用的是什么API在代码中检索和存储数据?

    首先,我认为您需要将数据层与实际的后端数据存储区分开。您可以使用NHibernate或Microsoft的实体框架来制作ORM(对象关系映射)更简单。因此,您在GUI中显示的数据表示对象,该对象表示数据库中的数据

    您可以使用MS Enterprise Libraries验证块进行验证


    还取决于您是使用Winforms还是WPF。您必须确保某种服务/模型正在处理所有CRUD操作,而不是GUI,以便您可以使用单元测试测试更新位。首先,我认为您需要将数据层与实际的后端数据存储区分开。您可以使用NHibernate或Microsoft的Entity FrA使ORM(对象关系映射)更容易。因此,您在GUI中显示的数据表示对象,该对象表示数据库中的数据

    您可以使用MS Enterprise Libraries验证块进行验证

    还取决于您使用的是Winforms还是WPF。您必须确保某种服务/模型正在处理所有CRUD操作,而不是GUI,以便您可以使用单元测试测试更新位

  • Web UI中的删除链接应打开“删除页面”
  • 在获取“删除页面”时,应验证相关记录的存在等前提条件。若验证失败,则不显示表单
  • “删除页面”的帖子应再次验证前提条件,并在一个数据库事务中删除数据库记录
  • 如果第二次验证失败或引发任何数据库异常,则显示常规错误消息
  • Web UI中的删除链接应打开“删除页面”
  • 在获取“删除页面”时,应验证相关记录的存在等前提条件。若验证失败,则不显示表单
  • “删除页面”的帖子应再次验证前提条件,并在一个数据库事务中删除数据库记录
  • 如果第二次验证失败或引发任何数据库异常,则显示常规错误消息

  • 如您所描述的数据库问题,考虑集中的异常管理策略,以便在数据层中捕获和抛出异常。您应该:

    • 确定应在数据访问层捕获和处理的异常(例如,死锁、连接问题可在DAL内解决)
    • 但是,您提到的异常(如违反约束)应向用户公开以供解决
    • 如果是特定的异常(不是基本异常类),请考虑数据层中的SaveCustomer()方法如果检测到异常,则允许该异常冒泡到正在调用数据层或服务的业务层。然后,业务层可以收集遇到的任何异常,并抛出可由UI适当处理的自定义异常

    如您所描述的数据库问题,考虑集中的异常管理策略,以便在数据层中捕获和抛出异常。您应该:

    • 确定应在数据访问层捕获和处理的异常(例如,死锁、连接问题可在DAL内解决)
    • 但是,您提到的异常(如违反约束)应向用户公开以供解决
    • 如果是特定的异常(不是基本异常类),请考虑数据层中的SaveCustomer()方法如果检测到异常,则允许该异常冒泡到正在调用数据层或服务的业务层。然后,业务层可以收集遇到的任何异常,并抛出可由UI适当处理的自定义异常