我是实体框架的新手,我试图从另一个表的外键中获取实体模型。下面的代码是我知道如何获得模型列表,但我不希望模型具有fk1。我想要那些模型的外键参考模型。我知道我可以在获取列表并从那里访问外键后迭代这些模型,但是从实体中获取它们的正确方法是什么?
List<Entity.Models.myModel> myModels = context.myModels
.Where(r => r.fk1 == fk1)
.ToList();
我想要的是myModels [i] .foreignKey2的列表。对不起,感到困惑。
答案 0 :(得分:2)
也许你正在寻找这样的东西:
鉴于Order
实体引用了ShippingType
和Customer
...
public class Order
{
public int OrderId { get; set; }
public int ShippingTypeId { get; set; }
public ShippingType ShippingType { get; set; }
public int CustomerId { get; set; }
public Customer Customer { get; set; }
}
...您要检索具有指定送货类型ID的订单的所有客户。然后查询可能如下所示:
List<Customer> customers = context.Orders
.Where(o => o.ShippingTypeId == givenShippingTypeId) // your fk1
.Select(o => o.Customer) // your foreignKey2 ???
.Distinct() // To eliminate duplicate customers in the result
.ToList();
答案 1 :(得分:0)
如果我理解你需要的是这个:
db.myModels.Include("myForeignModel").Where(r => r.name.contains("h")).toList
这将返回一个名称包含'h'的模型列表,所有这些模型将为eaxample加载一个foreing模型
public class Parent
{
public int id {get; set;}
public string name {get;set;}
public int childId {get;set;
public virtual child child {get;set;}
}
public class child
{
public int id {get; set;}
public string name {get;set;}
}
现在让我们假设你有一张父母的桌子和另一张儿童桌子
public dbset<parent> parents {get;set;}
public dbset<child> children {get;set;}
现在如果你想获得一个名为'john'的父母的第一个子名称,你会做这个查询
var db = new mycontext()
var parent = db.parents.include("child").Where(p => p.name == "john").FirstorDefault();
parent.child.name //this will show the child name for the parent called john