我需要解决问题的每篇文章都在C#中,我需要一个VB.NET解决方案。
我使用EF 6.0和Database First模型。让我使用经典的客户产品方案来演示我的情况。在我的数据库中,我有三个表Customer,Product和CustomerProduct。请参阅此链接中的this example,因为我的情况完全相同。
从数据库生成模型后,我的实体模型图显示CustomerProduct已按预期消失,模型显示客户和产品之间的多对多关系,也与客户和客户中的产品的导航属性一样在产品中。
我想要做的就是找到与客户相关的产品从两个表中提取一些数据,即CustName和ProductName。
我将使用的SQL是:
SELECT c.CustName, p.ProductName FROM Customer c
INNER JOIN CustomerProduct cp on c.CustomerId = cp.CustomerId
INNER JOIN Product p on cp.ProductId = p.ProductId
WHERE c.CustomerId=101
我不知道如何使用地址导航属性在一个查询中访问地址数据。
答案 0 :(得分:0)
您包含它们,然后通过Entity类中的属性访问它们。
Dim query = model.User.Include("Address").Include("UserAddressLink").Where(Function(o) o.UserId = 101).FirstOrDefault
If Not query Is Nothing Then
Dim houseNumber = query.Address.HouseNo 'uses the navigation property
End If
答案 1 :(得分:0)
感谢InteXX,我设法解决了这个问题。这是我的整个解决方案
Using db as new CustProdEntities
Dim query = db.Customers.Include(Function(U) U.Products).ToList
txtCustomer.Text = query.First.CustName
txtProduct.Text query.First.Products.First.ProdName
End Using
我坚持的位是必须过滤两次产品数据。我不确定是否有更简单的方法可以做到这一点,但它现在有效。