EntityFramework和join

时间:2015-12-16 23:55:43

标签: c# entity-framework join

当我通过EF进行查询以检索连接数据时,我遇到了问题:

string query = "SELECT * FROM Customer cus INNER JOIN Adress addr ON addr.Id = cus.Adresse_Id WHERE cus.name = 'John' ";    
Model model = new Model();
List<Customer> cus = model.Database.SqlQuery<Customer>(query).ToList();

我只能恢复客户端的属性

我的两张桌子:

客户:

地址:

我也不知道如何检索Adress的属性。

我有第二个问题:我有一个对象要创建,因为请求EF和直接来自web服务的对象

我想比较两个对象的属性,但我不知道如何在许多情况下做出其他方面。

我尝试探索很多曲目,但没有成功。

谢谢你!

1 个答案:

答案 0 :(得分:0)

  

我也不知道如何检索Adress的属性。

您可以使用联接。根据您的架构,您需要以下内容:

var client = from customer in dbContext.Customer
             inner join address in dbContext.Address
             on customer.Address_Id equals address.Id
             where customer.Name = "John"
             select 
             {
                  CustomerId = customer.Id,
                  CustomerName = customer.Name,
                  Address = address.Addresse
                  AddressCodePostal = address.Code_postal
                  // ...
             };

我假设您有一个dbConetxt类,以便您的应用程序与数据库通信。

  

为什么你的代码没有做你想做的事情?

在执行查询后,您可以创建Customer

列表
List<Customer> cus = model.Database.SqlQuery<Customer>(query).ToList();

当然,Customer类没有定义与客户地址相关的任何属性。您查询从数据库中获取此信息,但您不能使用它。因此,更快的解决方案比以上更好地为Customer类定义这些额外的属性,并且全部。