- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是一种与设计相关的问题,而不是技术问题。标题可能不完美,请随意编辑。
我有如下要求:我想从表中保存 SQL Server 2012 中特定 jobEntity(不要与 SQL Server 作业混淆)的资格。出于同样的目的,我有另一个表说资格,这将上述资格保存在与工作表具有参照完整性的工作中。用于制作此内容的存储过程具有参数 JobID 和用户定义的模式表类型:
CREATE TYPE [dbo].[TableTypeQualificationJob] AS TABLE(
[QualificationID] [int] NULL,
[QualificationCriteria] [nvarchar](4000) NULL,
[OptionTo] [bigint] NULL
)
GO
我在业务层有相应的实体。因此,当用户为作业创建多个资格时,他将列表传递给函数,底层方法将列表转换为数据表,并使用存储过程将其添加到数据库中。
要注意的是条件可以在 OR 或 AND 中。例如,如果有 5 个资格说资质1资格2资质3资质4资质5
并强制执行
qualification1 OR qualification2 OR qualification3 AND qualification4 AND qualification5
所以它分为三个组
(qualification1 OR qualification2 OR qualification3) AND (qualification4) AND (qualification5)
那么我如何在 QualificationEntity 类和数据库中解释它。我通过手动将列表转换为用户定义表类型的 DataTable 来使用 ADO.NET 调用 SP,我该如何实现它?
最佳答案
我会将 OrQualifications
和 AndQualifications
存储为单独的实体,并将它们作为与 Job
实体的多对多引用,这样您就可以区分资格。
要确定申请人是否具有合适的资格,您检查是否满足 AndQualification
实体中的所有资格,以及 OrQualifications
实体中的任何资格满足了。
编辑:
上述/初始答案是为了满足一份所需资格 list 的要求,以及至少需要一份资格 list 的另一份 list 的要求。对我来说这似乎足够好了,你确定你真的需要嵌套资格吗?相信我,让应用程序变得比它需要的更复杂是个坏主意。
表达式树
嵌套限定条件是另一种野兽,这里是一个建议的解决方案:表达式存储为一棵完整的二叉树(一棵二叉树,其中每个节点恰好有 0 或 2 个子节点)。这棵树中的所有节点都由运算符 AND 或 OR(& 或 |)组成,除了将作为限定条件的叶子。
示例表达式:
(A | B & C) | (D & E)
(从表达式到树的转换完全取决于您输入数据的方式,最简单的方法是手动创建树!)
作为一棵树:
| / \ | & / \ / \A & D E / \ B C
You have a number of different choices on how to persist this tree to a database, e.g:
Personally I would choose the serializing option as you will always need full trees and it's easy to deserialize into a datastructure.
Here is an example datastructure:
public class Node
{
public Node LeftChild { get; set; }
public Node RightChild { get; set; }
}
class OperatorNode : Node
{
public bool IsAnd { get; set; }
}
class QualificationNode : Node
{
public bool IsQualificationMet { get; set; }
}
然后你需要一个可以解析这棵树并输出真或假的函数:
public bool EvaluateNode( Node node )
{
var qualificationNode = node as QualificationNode;
if ( qualificationNode != null )
{
return qualificationNode.IsQualificationMet;
}
var operatorNode = node as OperatorNode;
if ( operatorNode.IsAnd )
{
return EvaluateNode( node.LeftChild ) && EvaluateNode( node.RightChild );
}
return EvaluateNode( node.LeftChild ) || EvaluateNode( node.RightChild );
}
免责声明:这是所谓的又快又脏的代码,请做得更好。
其他选项
查看 System.Linq.Expressions.Expression。它可用于以编程方式构建逻辑,因此也许这是您可以使用的东西。
关于c# - 持久化 bool 逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14214436/
我是Hibernate的新手。当我保存特定实体时,它将从现有实体中重写数据。 我将ID用作自动生成,如下所示: @Id @GeneratedValue(strategy=GenerationType.
我正在尝试以连续模式使用CouchDB更改通知API,所以我想发送此消息 _changes?feed = continuous?include_docs = true作为GET请求到达我的CouchD
我有 XMPP 服务器(openfire)和一堆客户端(spark),分为几个组(部门)。我正在寻找能够将它们留在 session 室中的能力。我的意思是 Skype 具有的类似功能;当用户关闭带有群
我发布这个问题是为了看看我是否正确理解 Azure Functions 中的并行性,特别是 Durable Functions。 最近使用 az cli 在 Azure Functions 中添加了设
我在 Dev Env 上有一个 AKS 集群,上面运行着一些容器。我还启用了 Azure Log Analytics。但我可以看到正在运行的当前容器的日志,而不是已被终止或停止的旧容器的日志。 我想知
在 Akka 中,当一个 actor 在处理消息时死亡(在 onReceive(...) { ... } 内),该消息就会丢失。有没有办法保证无损?有一种配置 Akka 在将消息发送到 onRecei
我试图让 selectOneMany 取得有限的成功。 我有以下数据库模型 User email Text verkey Text Maybe verified Bool password T
我需要使用持久性(Yesod)从键列表中获取实体列表 假设我有一个 Model 及其相应的 ModelId。我身边有: keys :: [ModelId] 我需要得到 models :: [Model
我有一个使用 GWT、请求工厂和地点/Activity 构建的网络应用程序。我很好奇我使用的历史 token 是否持久。该任务基本上就是让 URL 定义我的网络应用程序的确切位置(读作“文件/文件夹结
我正在寻找一种 jQuery 方法来在刷新页面时使页面元素持久保留在用户屏幕上。当我刷新页面并且丢失 jQuery 页面中的内容时,它会发生变化。 我需要页面持久。如何刷新页面并保持元素不刷新(持久)
当我尝试使用 gcc 编译带有 -fopenmp 标志的 C 代码时,我已经持续收到此错误超过 6 小时了。 错误:控制谓词无效 for ( int i = 0; i #include #ifde
我有带有验证注释的实体,例如@NotNull。我不知道如何防止容器管理的事务在批量持久操作中出现 ConstraintViolationException 的情况下回滚,例如: public void
这是我的代码: http://jsfiddle.net/KCb5z/8/embedded/result/ http://jsfiddle.net/KCb5z/8/ $(function () {
我正在与服务器通信,理想情况下,我希望输入流和输出流始终处于运行状态。我收到未经请求的响应,因此我必须始终准备好接收输入流上的数据。 在我进一步深入之前,我应该说我建立的任何连接都必须能够支持 SSL
我正在寻找一种正确扩展 Azure Functions 的方法,但遇到了问题。 我有一组 IoT 设备,通过 HTTP 向 Azure 发送数据(为此,有一组自动扩展的 Azure Functions
1.临时态(瞬时态) 不存在于session中,也不存在于数据库中的数据,被称为临时态。 比如:刚刚使用new关键字创建出的对象。 2.持久态 存在于session中,事务还未提交,提交之后
我在 Kohana v2 中使用数据库 session 驱动程序。为了使 session 持久化,Kohana 创建了一个 token cookie。这个 cookie 使用了我想的 cookie 配
有谁知道是否有办法使用 PyWinrm 打开一个持久的 PowerShell session ,该 session 保持状态并且可以多次调用?我正在尝试执行以下操作: #!/bin/python im
在运行的Elasticsearch集群中,配置文件中的index.number_of_replicas设置为1。 我可以通过运行以下命令在运行的集群上将其更新为2 # curl -XPUT "http
我在“这么长的帖子必须意味着大量的代码和配置”部分下一对一地使用指南代码。 http://blog.springsource.com/2006/08/07/using-jpa-in-spring-wi
我是一名优秀的程序员,十分优秀!