我想在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);
}
}
我可以映射表[订单],但我更愿意避免这种情况。我的问题有可能解决方案吗?