0

我可以使用以下代码行来创建一个只返回“ActivityEntity”类型的对象的查询......

var q = CreateObjectSet<EntityBase>("EntityBases").OfType<ActivityEntity>()

..并且运行查询按预期工作。但我想实际使用 Entity SQL 语法创建一个查询,因此尝试将上面的代码转换为以下代码......

string query = "SELECT it FROM OFTYPE(MyContext.EntityBases, MyNamespace.ActivityEntity) AS it";
var q = context.CreateQuery<DbDataRecord>(query.ToString(), new ObjectParameter[] { });

...除了这会出现以下错误...

找不到类型“MyNamespace.ActivityEntity”。确保加载了所需的模式并且正确导入了命名空间。

...两组代码都在同一个 C# 文件中,因此命名空间不会有问题,因为代码的强类型版本工作得很好。任何想法如何解决这个问题?

笔记:

不确定这是否有所不同,但实体框架设置为无代码生成策略,然后我构建了自己的类以供使用。但是我已经用 EdmEntityTypeAttribute 属性标记了它们。

4

1 回答 1

0

The solution turns out that I needed to ensure that CreateObjectSet had been used before generating the Entity SQL. So before creating the Entity SQL I use the following code...

var q = CreateObjectSet<EntityBase>("EntityBases").OfType<ActivityEntity>();

but never actually use the generated 'q'. Just using this line ensures that the Entity Framework context knows about the existence of the EntityBases collection and its derived types.

于 2012-10-18T21:57:56.090 回答