我的EF6模型有很多这样的关系(我简化了模型以使其更清晰):
public class Card
{
public int CardId { get; set; }
public string CardTitle { get; set; }
public virtual ICollection<CardLayout> CardLayouts { get; set; }
}
public class Layout
{
public int LayoutId { get; set; }
public string LayoutTitle { get; set; }
public virtual ICollection<CardLayout> CardLayouts { get; set; }
}
public class CardLayout // relationship table
{
public int CardLayoutId { get; set; }
public int CardId { get; set; }
public int LayoutId { get; set; }
public int CardLocation { get; set; }
public virtual Card Card { get; set; }
public virtual Layout Layout { get; set; }
}
这就是我现在使用它的方式:
int exampleId = 23;
using (MyContext ctx = new MyContext())
{
Card c = ctx.Cards.Find(23);
foreach (CardLayout cardLayout in c.CardLayouts)
{
Layout layout = cardLayout.Layout;
DoSomethingWithLayout(layout);
}
}
我需要直接在我的Card对象中进行布局收集。我不想通过关系表。我想这样使用它:
int exampleId = 23;
using (MyContext ctx = new MyContext())
{
Card c = ctx.Cards.Find(23);
foreach (Layout layout in c.Layouts)
{
DoSomethingWithLayout(layout);
}
}
我尝试过这样的事情:
public class Card
{
public int CardId { get; set; }
public string CardTitle { get; set; }
public virtual ICollection<CardLayout> CardLayouts { get; set; }
public virtual ICollection<Layout> Layouts { get; set; }
}
但Layouts
集合始终为空。
我的问题是:如何直接从Card对象访问Layouts集合?我也想保留Card.CardLayouts集合,因为我的CardLayouts表包含字段(比如我简化示例中的CardLocation)
聚苯乙烯。有人可以提高我的问题标题吗?我的英语不够好,写得更好。提前谢谢。
答案 0 :(得分:2)
虽然我认为@ Biscuits&#39;评论是正确的。如果您因任何原因不想走这条路线,您应该只能用吸气剂创建另一个属性。
interrupt