在C#中使用Entity Framework检查重复的行

时间:2016-01-27 17:34:28

标签: c# entity-framework

使用Entity Framework 6.x.对于某些实体,在我创建实体对象的新实例并用数据值填充它之后,我希望能够在数据库上触发查找。我想看看是否存在一行,其中包含填充到实体对象中的所有相同值,如果存在,则返回主键。

似乎合乎逻辑的是,应该有一种标准的方法来构建实体框架,但我找不到它。如果有一个方法只接受任何实体对象并返回任何匹配行的主键,那就太好了。

2 个答案:

答案 0 :(得分:1)

仅使用mysql> CREATE TABLE CONTRACT ( -> CON_NUMBER INT NOT NULL PRIMARY KEY, -> CON_STARTDATE DATETIME NOT NULL, -> CON_ENDDATE DATETIME NOT NULL, -> PUBLICATION_PUB_ID INT NOT NULL, -> INDEX PUBLICATION (PUBLICATION_PUB_ID), -> CONSTRAINT FK_CONTRACT_PUBLICATION FOREIGN KEY (PUBLICATION_PUB_ID) REFERENCES PUBLICATION (PUB_ID)) ; 过滤器检索具有匹配值的实体有什么问题?

FirstOrDefault()

(现在我的机器上没有EF,实际的访问代码只是伪造的)

答案 1 :(得分:0)

这是不可能的。您必须使用要检查的所有数据值创建查询。另一种选择是让校验和列包含来自所有值的一些散列(没有主键),然后如果存在具有这种散列的实体,则可以从新创建的实体和查询数据库计算散列。

编辑:另外还有一个选项可以在SQL Server中创建多列约束(请检查:Unique constraint on multiple columns),但它不会以方便的方式返回重复行的主键。