gpt4 book ai didi

c# - EF SqlQuery 尝试映射对象属性,即使它被归因于 [NotMapped]

转载 作者:太空狗 更新时间:2023-10-29 21:32:20 25 4
gpt4 key购买 nike

我有一个用 context.Database.SqlQuery<MyObject>("MyProc") 执行的存储过程

MyObject有一个只读属性:

[NotMapped]
public bool IsSomething { get { return this.otherproperty == "something"; } }

所以我得到了错误:

System.IndexOutOfRangeException: IsSomething at System.Data.ProviderBase.FieldNameLookup.GetOrdinal etc

这是因为 MyProc 没有 IsSomething在结果列中(我 100% 确定这可能是原因)。

它不应该忽略它吗,因为它是 [NotMapped] ?我是否需要为 SqlQuery 设置其他内容? ?

更奇怪的是,我只在生产环境中看到它,从 Stackify 的日志中,页面似乎可以正确加载,浏览器中没有任何错误。

最佳答案

根据 documentation

Database.SqlQuery<TElement> Method (String, Object[])

Creates a raw SQL query that will return elements of the given generic type. The type can be any type that has properties that match the names of the columns returned from the query, or can be a simple primitive type. The type does not have to be an entity type. The results of this query are never tracked by the context even if the type of object returned is an entity type.....

强调我的

它正在查找从 IsSomething 查询返回的读者中如 System.Data.ProviderBase.FieldNameLookup.GetOrdinal 所示在错误消息中。

因为该列不存在,您将得到 IndexOutOfRangeException .

Shouldn't it just ignore it since it's [NotMapped] ?

没有。它忽略对象上存在的任何属性,包括 [NotMapped] .引用上面引用的引用

Do I need to set something else for SqlQuery ?

我建议创建另一个对象,其属性仅匹配/映射到过程的预期结果,并将其用作 SqlQuery 的通用参数打电话。

关于c# - EF SqlQuery 尝试映射对象属性,即使它被归因于 [NotMapped],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45715066/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com