我正在使用AJAX查询来调用引用模型的函数。
到目前为止,它将详细信息返回给用户表,一切正常。问题是,我与另一个表有一对多的关系。
Person - PersonId转到连接表 - personId链接到可能的多个colourIds - colourId链接到颜色表。
所以有三张桌子 - 人物,喜欢的颜色和颜色。
我想在原始查询中包含联接,但我遇到了困难。查询:
TechTestEntities testTechObj = new TechTestEntities();
var Result = from p in testTechObj.People
join fp in testTechObj.FavouriteColours on p.PersonId equals fp.PersonId
join c in testTechObj.Colours on fp.ColourId equals c.ColourId
select p;
当我运行这个时,我得到的错误是'实体类型FavouriteColours不是当前上下文模型的一部分。'
我还将FavouriteColours添加到模型中,如下所示:
public virtual DbSet<FavouriteColours> FavouriteColours { get; set; }
所有表都应包含在ADO模型中,因此我不确定问题是什么以及如何通过连接检索颜色名称。
编辑:
型号代码
namespace techTest4
{
using System;
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
using techTest4.Models;
public partial class TechTestEntities : DbContext
{
public TechTestEntities()
: base("name=TechTestEntities")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
public virtual DbSet<Colour> Colours { get; set; }
public virtual DbSet<Person> People { get; set; }
//public virtual DbSet<FavouriteColours> FavouriteColours { get; set; }
}
}
答案 0 :(得分:1)
我不得不猜测你的课程是什么样子,但看看这段代码: (https://dotnetfiddle.net/TVqzse)
这个片段对您来说最有趣:
var favoriteColours = people.SelectMany(p => p.FavouriteColours);
foreach(var favoriteColour in favoriteColours) {
System.Console.WriteLine(favoriteColour.Color.ColorName);
}
这使用LINQ来提取所有人喜欢的颜色,你应该能够在Entity Framework中完全相同。