使用Entity Framework 6.x.对于某些实体,在我创建实体对象的新实例并用数据值填充它之后,我希望能够在数据库上触发查找。我想看看是否存在一行,其中包含填充到实体对象中的所有相同值,如果存在,则返回主键。
似乎合乎逻辑的是,应该有一种标准的方法来构建实体框架,但我找不到它。如果有一个方法只接受任何实体对象并返回任何匹配行的主键,那就太好了。
答案 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),但它不会以方便的方式返回重复行的主键。