使用 EntityReference 查询问题

Posted

技术标签:

【中文标题】使用 EntityReference 查询问题【英文标题】:Problem querying with EntityReference 【发布时间】:2010-02-25 21:07:08 【问题描述】:

当我执行代码时:

        public List<T> GetCustomerTxList(int customerId)
        
            var matchingPocos = new List<T>();

            using (linq.AOMSEntities dataRepos = new linq.AOMSEntities())
                    
                IEnumerable txlist = from t in dataRepos.TransactionRecord
                                 where t.CustomerReference.Value.Id == customerId
                                 select t;

                foreach (EntityObject entity in txlist)
                
                    matchingPocos.Add(entity.ConvertToPoco<T>());
                
            
            return matchingPocos;
        

我得到以下异常: Data.Repository.Integration.Test.LinqRepositoryTest.GetCustomerTxList: System.NotSupportedException:LINQ to Entities 不支持指定的类型成员“CustomerReference”。仅支持初始化程序、实体成员和实体导航属性。

CustomerReference 是引用 Customer 实体的 TransactionRecord 实体上的 EntityReference。

为什么我不能使用实体引用进行查询?

执行此类查询的推荐方法是什么?

如果有帮助,我很乐意提供更多信息/代码。

【问题讨论】:

【参考方案1】:

您应该能够像这样在查询中直接访问客户:

from t in dataRepos.TransactionRecord 
where t.Customer.Id == customerId 
select t;

在这种情况下,EF 将在幕后为您使用 CustomerReference。

【讨论】:

谢谢,很好。不能使用 EntityReference 执行查询是 EF 的限制吗? @Paul,就我而言,这不是限制,这种方式更具可读性。 我同意它更具可读性。我正在寻找对我理解的确认,发现很难找到解释这种详细程度的 EF 信息。

以上是关于使用 EntityReference 查询问题的主要内容,如果未能解决你的问题,请参考以下文章

在第 46 行调用 \sites\all\modules\community\entityreference\entityreference.install 中的未定义函数 entityreferen

从 ASP.NET 网站序列化时“无法序列化 EntityReference 对象”,但在 ASP.NET Web 应用程序上工作正常

re模块,主要用来查询

Scala Slick 将 Rep 子查询组合成一个 re

爬虫解析Re 之(六 ) --- Re模块

如何快速优化搜索查询工作?