对大家来说。下面您可以看到在我的数据库中进行的EF Power Tools逆向工程的部分结果。
public partial class Articoli {
public decimal Id_Articolo { get; set; }
public string Codice { get; set; }
public virtual ICollection<Udc_Dettaglio> FK_Udc_Dettaglio_Articoli { get; set; }
}
public partial class Udc_Dettaglio {
public decimal Id_Udc { get; set; }
public decimal Id_Articolo { get; set; }
public virtual Articoli FK_Udc_Dettaglio_Articoli { get; set; }
}
public Udc_DettaglioMap() {
// Primary Key
this.HasKey(t => new { t.Id_Udc, t.Id_Articolo });
// Relationships
this.HasRequired(t => t.FK_Udc_Dettaglio_Articoli)
.WithMany(t => t.FK_Udc_Dettaglio_Articoli)
.HasForeignKey(d => d.Id_Articolo);
}
如果通过使用breeze,我尝试执行此查询
breeze.EntityQuery.from("Articoli").expand("FK_Udc_Dettaglio_Articoli")
或者这个
breeze.EntityQuery.from("Articoli").select("Codice,FK_Udc_Dettaglio_Articoli")
一切正常,但如果我尝试这个
breeze.EntityQuery.from("Articoli").select("Codice,FK_Udc_Dettaglio_Articoli.Id_Udc")
它抛出了一个例外:
无法在类型'System.Collections.Generic.ICollection`1 [AWM.Models.Udc_Dettaglio]'上找到属性'Id_Udc'。“
我在EF模型定义中遗漏了什么?我想不是因为扩展实用程序正在运行...
答案 0 :(得分:1)
我相信您正在尝试构建一个EF不支持的查询(并且OData查询语法也不支持)。
您的FK_Udc_Dettaglio_Articoli
是Articoli
的集合导航属性。通过尝试仅追踪该集合中每个元素的Id_Udc
属性,您实际上是尝试在投影中创建投影 ...并且EF不支持该目标据我所知。
要验证,请尝试在服务器端构建一个能够执行所需操作的LINQ查询。像
这样的东西dbContext.Articoli.Select(
a => new {a.Codice, a.FK_Udc_Dettaglio_Articoli.Select(f => new {f.Id_Udc}));
您很快就会发现该查询无法编译。您收到类似“匿名类型投影初始化程序应该是简单名称或成员访问扩展”的消息。