实体sql vs createquery在其中一个工作,另一个错误的错误



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

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

..并且运行查询按预期工作。但是我想实际上使用实体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属性标记了它们。

解决方案我需要确保在生成实体SQL之前使用CreateObjectset。因此,在创建实体SQL之前,我使用以下代码...

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

,但从未真正使用生成的" Q"。仅使用此行确保实体框架上下文知道EntityBases Collection及其派生类型的存在。

相关内容

最新更新