标签: entity-sql

Linq to Entities与ESQL的性能

使用实体框架时,ESQL的性能是否优于Linq to Entities?

我更喜欢使用Linq to Entities(主要是因为强类型检查),但我的其他一些团队成员都将性能作为使用ESQL的理由.我想充分了解使用这两种方法的专家/骗子.

linq-to-entities entity-framework entity-sql

18
推荐指数
1
解决办法
1万
查看次数

在什么情况下我应该使用Entity SQL?

我想知道是否有更适合使用ESQL的情况?

通常,我发现ESQL令人沮丧(特别是在需要完全限定实体类型的所有特殊情况下)并且可能使用ESQL完成的任何操作都可以通过SQL或LINQ完成.

但我想知道ESQL更适合解决方案的情况,或者比使用SQL或LINQ(更容易/更快地编码或更好的性能等)具有竞争优势的情况

那么,这里的妥协是什么?什么时候使用三种方法中的每一种来查询EF4更好?

sql linq entity-framework entity-sql entity-framework-4

14
推荐指数
1
解决办法
3697
查看次数

实体框架和LINQ to SQL - 利益冲突?

过去一周,我一直在博客圈阅读Linq to SQL已经死亡[以及EF和Linq to Entities的长期存在].但是当我阅读MSDN上的概述时,我觉得Linq to Entities就像Linq to SQL生成SQL查询一样生成eSQL.

现在,由于底层实现(以及SQL Server还不是ODBMS)仍然是一个Relational存储,在某些时候,Entity框架必须转换为SQL查询.为什么不修复Linq to SQL问题(m:m关系,只有SQL服务器支持等)并使用Linq to SQL作为生成这些查询的层?

这是因为性能还是EF使用不同的方式将eSQL语句转换为SQL?

在我看来 - 至少对于我没有学过的头脑 - 在EF中自然适合Linq to SQL.

评论?

linq linq-to-entities entity-framework entity-sql linq-to-sql

13
推荐指数
2
解决办法
2498
查看次数

我可以在LINQ to Entities查询中使用CAST吗?

我有一个LINQ to Entities查询

From item In ctx.Items
Select new {
    ListPrice = item.Cost / (1M - item.Markup)
};
Run Code Online (Sandbox Code Playgroud)

我可以指定EF,我希望它应用cast查询和物化之前将其标价1?有什么EntityFunctions.Cast可能吗?或者我可以使用ESQL cast功能吗?

我希望LINQ能够沿着这些方向生成SQL查询

SELECT cast((Cost / (1 - Markup)) as decimal(10, 2)) AS ListPrice
Run Code Online (Sandbox Code Playgroud)

1我的目标是摆脱一堆精度/缩放查询.因为有十进制减法和除法,所以数学结果是小数(38,26)!这比.NET可以处理的更多,而且超出了我的需要.

c# linq sql-server entity-framework entity-sql

7
推荐指数
1
解决办法
1700
查看次数

在EntityFramework EntitySql中使用"option(maxrecursion 0)"

我有执行recrusive基于输入,这是一个csv字符串IDS与CTE选择一个SQLServer功能.

不幸的是我不能使用"选项(MAXRECURSION 0)"我的函数中,必须在执行功能时使用.问题是我无法找到如何在EntityFramework的EntitySql中使用此选项.

考虑到我的函数被调用MyRecursiveFunction,这里有一些代码片段:

public virtual IQueryable<MyFunctionReturnType> ExecuteMyFunction(IObjectContextAdapter objContextAdapter, string csvIds)
{
    var idsParam = new ObjectParameter("idsParam", csvIds);

    // This is the original one, that works, but has no "option(maxrecursion 0)"
    return objContextAdapter.CreateQuery<MyFunctionReturnType>("[MyRecursiveFunction](@idsParam)", idsParam);

    // gives me an error of incorrect syntax near "option"
    return objContextAdapter.CreateQuery<MyFunctionReturnType>("select VALUE tblAlias from [MyRecursiveFunction](@idsParam) as tblAlias OPTION(MAXRECURSION 0)", idsParam);

    // Also gives me syntax error:
    return objContextAdapter.CreateQuery<MyFunctionReturnType>("MyRecursiveFunction(@idsParam) option(maxrecursion 0)", idsParam);
}
Run Code Online (Sandbox Code Playgroud)

任何人都知道如何使用option(maxrecursion 0)entitySql?

我知道我可以使用"ExecuteStoreQuery"来执行我想要的任何sql查询,但我确实需要一个IQueryable,因为"ExecuteMyFunction"的返回将在实现之前与另一个IQueryable连接.

请节省您的时间和不建议调用ExecuteStoreQuery沿AsQueryable....我真的不想兑现对整个结果集,因为我会兑现只有10结果分页 …

c# sql-server entity-framework common-table-expression entity-sql

7
推荐指数
2
解决办法
564
查看次数

实体框架4.0实体SQL传递null ObjectParameter参数

我有一个Entity SQL查询:

SELECT VALUE t FROM MyEntities AS t 
WHERE t.Name = @p OR (@p IS NULL AND t.Name IS NULL)
Run Code Online (Sandbox Code Playgroud)

我可以执行如下查询:

var results = context.CreateQuery<WorkflowInstance>(
    query, new ObjectParameter("p", name)).ToList();
Run Code Online (Sandbox Code Playgroud)

但是,如果'name'变量为null,那么我得到System.ArgumentNullException.所以如果名称为null,我也尝试使用DBNull.Value,我得到以下异常:

捕获到System.ArgumentOutOfRangeException
消息=指定的参数类型"System.DBNull"无效.仅支持标量类型,例如System.Int32,System.Decimal,System.DateTime和System.Guid.

我想要参数化查询,其中空值也是可能的参数值.如何使用Entity SQL实现此目的?

.net entity-framework .net-4.0 entity-sql entity-framework-4

6
推荐指数
1
解决办法
8276
查看次数

查看Linq-to-Entities生成的实体SQL

有没有办法可以查看我的Linq-to-entities查询使用EF框架生成的Entity Sql(eSQL)(即,不是本机SQL,而是eSQL,如果有意义的话?)

谢谢!

c# linq-to-entities entity-sql entity-framework-4

5
推荐指数
1
解决办法
1336
查看次数

有人可以解释实体SQL中的REF,CREATEREF,DEREF,KEY做什么吗?

我找不到关于这些运算符的好的文档。有人可以提供一些使用示例并解释其作用吗?

entity-framework entity-sql

5
推荐指数
1
解决办法
966
查看次数

实体框架4.0:实体SQL CAST操作不起作用

我正在尝试进行一个查询,我将一个文本列(包含一个整数作为文本)转换为Int32.这是查询:

SELECT VALUE t FROM MyEntities AS t WHERE CAST(t.TextColumn AS Edm.Int32) > 5
Run Code Online (Sandbox Code Playgroud)

但是,我得到一个带有以下消息的System.Data.EntitySqlException:

找不到类型'Edm.Int32'.确保加载了所需的模式,并正确导入名称空间.近类型名称,第1行,第75列.

根据MSDN,Edm.Int32应该是有效类型.

有谁知道什么是错的?

编辑:

经过一些试验和错误,我发现以下工作:

SELECT VALUE t FROM MyEntities AS t WHERE CAST(t.TextColumn AS System.Int32) > 5
Run Code Online (Sandbox Code Playgroud)

MSDN中的示例是错误的吗?我觉得我在这里错过了一些东西......

.net entity-framework entity-sql entity-framework-4

4
推荐指数
1
解决办法
2059
查看次数

在以查询字符串开头时比较EntitySQL中的DateTime值

我使用QueryBuilder如下:

var queryString = String.Format(
    "SELECT VALUE e FROM Entity AS e WHERE e.EndDate {0} {1} ",
    operator,
    DateTime.Today.AddYears(1).ToString("d", DateTimeFormatInfo.InvariantInfo)
);
ObjectQuery<Entity> query = new ObjectQuery<Entity>(queryString, Context);
Run Code Online (Sandbox Code Playgroud)

请注意,我非常简化了这个示例,我的目标是在创建QueryBuilder实例之前将查询构建为字符串.(只要这是可能的)

我已经尝试了以下内容

...DateTime.Today.AddYears(1)...
...DateTime.Today.AddYears(1).ToString()...
...DateTime.Today.AddYears(1).ToString("yyy\MM\dd")...
Run Code Online (Sandbox Code Playgroud)

这都导致一个异常,说我要么无法将DateTime与String或Int32进行比较.

我开始问我这种方法是否可行......

.net c# entity-framework entity-sql query-builder

3
推荐指数
1
解决办法
1250
查看次数

像entitydatasource中的operator一样

我在asp .net格式中使用EntityDataSource,Gridview绑定到它.在entityDataSource中使用where子句:

Where="it.Name like '%@Name%'
Run Code Online (Sandbox Code Playgroud)

@Name 是一个参数:

<WhereParameters>
<asp:ControlParameter ControlID="TextBox1" Name="Name" PropertyName="Text" Type="String"  />
</WhereParameters>
Run Code Online (Sandbox Code Playgroud)

但它不起作用.当我@Name用固定字符串更改它正常工作,如下所示:

Where="it.Name like '%ppp%'"
Run Code Online (Sandbox Code Playgroud)

asp.net gridview entity-sql entitydatasource sql-like

3
推荐指数
1
解决办法
2834
查看次数

用linqToEntity(Esql)强制转换

我的代码:

public List<Book> GetBook(string NameField, object Value)
    {
        var queryESQL = @"select VALUE Book from Book
                 where Cast(Book." + NameField + " as string) like '%M%'";
        var query = this.Entities.CreateQuery<Book>(
                  queryESQL);
        return query.ToList();
    }
Run Code Online (Sandbox Code Playgroud)

错误:

无法找到"字符串"类型.确保加载了所需的模式,并正确导入名称空间.近型名称,第2行,第51列.

更新:

新代码:

public List<Book> GetBook(string NameField, object Value)
    {
        var queryESQL = @"select VALUE Book from Book
                 where Cast(Book." + NameField + " as EDM.string) like '%M%'";
        var query = this.Entities.CreateQuery<Book>(
                  queryESQL);
        return query.ToList();
    }
Run Code Online (Sandbox Code Playgroud)

错误:

Type 'EDM.string' could not be found. Make sure …
Run Code Online (Sandbox Code Playgroud)

entity-framework entity-sql c#-4.0

1
推荐指数
1
解决办法
735
查看次数

如何使用实体框架和 Esql 从 Where 过滤器返回 Bool

我使用 c# 和 ef4。

我有一个带有两个属性的实体的模型int Idstring Title.

如果 Id 和 Title 存在于 DataSource 中ESQL,我需要编写一个查询return bool TRUE。请注意,Id 是我的数据存储中的主键。

知道怎么做吗?

entity-sql

0
推荐指数
1
解决办法
4652
查看次数