实体框架定义查询+ IsNull +左联接=方式太慢

|| 我有这个SQL语句
select st.Column1, isnull(sot.SomeColumn, 0) as SomeColumn 
from SomeTable st 
left join SomeOtherTable sot 
在Entity Framework(4.0).edmx文件中的“ 1”标记中,并且我遇到了严重的性能问题。编写时运行SQL的速度很快,但是EF在运行时将SQL包装起来以注入参数,这大大降低了它的速度。 我可以带走isull,并且在包装好的EF SQL中它和它本机一样快,但是我需要isull来确保
SomeColumn
具有值。 我可以在这里使用可以替代EF的isull方法吗? 谢谢你的帮助。     
已邀请:
在EF设计器中,该属性的属性中应该有一个默认值属性,但我不确定这是否适合您的需求。或者,从EF模型生成的所有实体都是部分实体。我将添加另一个包装SomeColumn属性(不包含isull)的属性以提供默认值。假设SomeColumn可能会映射为可为null的int,则可以这样定义新属性:
public SomeColumnWithDefaultValue {
    get { return this.SomeColumn ?? 0; }
    set { this.SomeColumn = value; }
}
您将针对SomeColumn编写查询,然后在需要确保其不为null的地方使用SomeColumnWithDefaultValue。     
我的解决方案是从SQL中完全删除对ѭ4的使用,而对所有这些查询都包括ѭ5(需要与SQL 2000+兼容)。一旦将此ѭ6设置为我的单个
<EntityKey>
,就可以允许将任何左联接属性设置为
isnullable=true
,而我不再需要处理EF减速。 希望这对某人有帮助。     

要回复问题请先登录注册