EntityFramework中的SqlQuery与sql命令包括非映射表

时间:2017-06-01 11:57:29

标签: c# sql-server entity-framework entity-framework-5

我想在EntityFramework DbContext中运行一个SQL语句,但是与SQL Management Studio中执行的相同查询相比,我没有得到预期的结果。零结果在代码中运行,3在SQL-MS中运行。

调用方法如下:

 internal List<AddressZ> BaseAddresses(string email)
 {
     string sql = @"select * from [Address] where Email = 'Email@example.com' AND Id not in
     (
       select [Address].Id from [Address] 
       inner join [Order] on [Order].ShippingAddressId = [Address].Id OR
                             [Order].BillingAddressId = [Address].Id
       where Email = 'Email@example.com'
     )";
     return context.SqlQuery<AddressZ>(sql, new object[]{}).ToList();
 }

上下文对象是DbContext的一个实现。返回类型“AddressZ”在上下文中映射,但表“[Order]”未在上下文中映射,并且未使用,除了在数据库查询中(我想它在数据库中执行)。

class CustomerContext : DbContext
{
    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Configurations.Add(new AddressZMap());
    }

    public IEnumerable<TElement> SqlQuery<TElement>(string sql, params object[] parameters)
    {
        return base.Database.SqlQuery<TElement>(sql, parameters);            
    }
}

我可以映射表[订单],但我更愿意避免这种情况。我的问题有可能解决方案吗?

0 个答案:

没有答案