Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 4.0 使用DbContext.FindBy时不使用PK_C# 4.0_Entity Framework 5_Dbcontext - Fatal编程技术网

C# 4.0 使用DbContext.FindBy时不使用PK

C# 4.0 使用DbContext.FindBy时不使用PK,c#-4.0,entity-framework-5,dbcontext,C# 4.0,Entity Framework 5,Dbcontext,目标: 我有一个名为Publication的表,其中包含Id、RecordId、EntityType和其他几列。我从该表中选择所有需要发布到另一个数据库的记录。然后,我循环该集合以处理记录并将记录移动到另一个数据库 背景: EntityType列用于标识上下文需要检索的集合。我还使用反射来创建该类型的对象,以查看它是否实现了某种类型的接口。如果正在处理的记录实现了该接口,那么我知道发布表中该记录的RecordId不是Set()中的PK,而是FK 当我在查找不继承特定接口的EntityTypes的

目标: 我有一个名为Publication的表,其中包含Id、RecordId、EntityType和其他几列。我从该表中选择所有需要发布到另一个数据库的记录。然后,我循环该集合以处理记录并将记录移动到另一个数据库

背景: EntityType列用于标识上下文需要检索的集合。我还使用反射来创建该类型的对象,以查看它是否实现了某种类型的接口。如果正在处理的记录实现了该接口,那么我知道发布表中该记录的RecordId不是Set()中的PK,而是FK

当我在查找不继承特定接口的EntityTypes的PK值时,此代码工作正常

object authoringRecordVersion = PublishingFactory.AuthoringContext.Set(recordType.Entity.GetType()).Find(record.RecordId);
问题:

DbContext.Set(EntityType).Find(PK)在PrimaryKey值之后。既然不允许使用“Where”,我如何告诉Set()像这个sudo代码示例那样搜索

object authoringRecordVersion = PublishingFactory.AuthoringContext.Set(recordType.Entity.GetType()).Where(c => c.HeaderRecordId == record.RecordId)
更新:

我正在努力实现以下目标。我明天会通知结果

var sql = "SELECT * from " + record.Entity + " WHERE HeaderRecordId = '" + record.RecordId + "'";
authoringRecordVersion = PublishingFactory.AuthoringContext.Set(recordType.Entity.GetType()).SqlQuery(sql).AsNoTracking();
确实有效。不知道为什么我没早点看到

.SqlQuery(sql).AsNoTracking();