有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

c#同步逻辑,用于在代码或SQL中将项目列表持久化到数据库?

我在UI中显示了一个项目列表。 它们的形式如下: 名称(下拉)、属性1(文本框)、属性2(文本框) 名称作为一个唯一的键来识别一个唯一的项(主键)

这些值显示在列表中,用户可以选择创建、更新属性 并从列表中删除值

现在假设用户删除了一些属于UI中某一行的项目,然后添加了属于相同名称的新项目

然后用户按save键查看整个项目列表

现在,为了实现这种情况下的持久性逻辑,我有多个选项:

  1. 我在SQL级别执行所有业务逻辑 我必须确保数据库中没有输入重复的名称,因此我在数据库级别处理这个问题,方法是编写SQL查询,以便查询首先检查是否存在类似名称的条目,如果存在,则更新其他条目
  2. 我在代码级别执行业务逻辑,即在保存、比较和同步匹配项时重新加载所有数据,然后决定必须插入某些项并删除其他项
  3. 我在每个项目上维护一个IsDirty标志,当客户端发生任何更改时,我更新IsDirty,任何标记为IsDirty的项目都必须更新,添加的任何新项目仍必须在SQL级别检查重复名称。但这种方法的不同之处在于,我们不必从数据库中重新加载数据
  4. 我从数据库中删除所有项目,然后重新插入UI中的所有项目(我想这是最糟糕的方式)

我应该选择哪个选项?为web应用持久化项目列表的最佳实践是什么

同步逻辑应该去哪里

在数据库级别设置一些同步逻辑,并检查是否存在名称,而不是插入,只是更新,这是否明智

这种逻辑应该存在于SQL级别还是代码级别(比如Java或C#级别)

这个有什么名字(设计模式)吗


共 (1) 个答案

  1. # 1 楼答案

    @SeaHorse:正如你所说,第四项是世界上最糟糕的。。所以请毫无疑问地忽略这个选项

    如果我需要做出决定,我会选择1)方法,在数据库端创建CRUD存储过程,并在域上创建逻辑,只调用存储过程。使用这种方法,如果需要重构某些内容,可以避免打开域代码,相反,可以在存储过程上快速执行代码更新,这些存储过程是更模块化、更易于管理的组件