标签: linq-to-entities

LINQ to SQL已被弃用吗?

早在2008年底,就LINQ to SQL的未来发生了很多争论.许多人认为微软在.NET 4.0中对实体框架的投资是LINQ to SQL没有未来的标志.我想我会在做出自己的决定之前等待,因为人们不同意.

快进18个月,我有供应商提供依赖LINQ to SQL的解决方案,我个人试了一下,非常喜欢使用它.我想这是留下来的.

但是我正在读一本新书(Ben Watson的C#4.0 How-To)和第21章(LINQ),他认为它"或多或少被微软推荐"并建议使用LINQ to Entity Framework.

我的问题是LINQ to SQL是否正式被弃用和/或权威实体(Microsoft,Scott Gu等)是否正式建议使用LINQ to Entities而不是LINQ to SQL.

linq linq-to-entities linq-to-sql

55
推荐指数
6
解决办法
2万
查看次数

C#PredicateBuilder实体:参数"f"未绑定在指定的LINQ to Entities查询表达式中

我需要构建一个动态过滤器,我想继续使用实体.由于这个原因,我想使用albahari的PredicateBuilder.

我创建了以下代码:

var invoerDatums = PredicateBuilder.True<OnderzoeksVragen>();
var inner = PredicateBuilder.False<OnderzoeksVragen>();

foreach (var filter in set.RapportInvoerFilter.ToList())
{
    if(filter.IsDate)
    {
        var date = DateTime.Parse(filter.Waarde);
        invoerDatums = invoerDatums.Or(o => o.Van >= date && o.Tot <= date);
    }
    else
    {
        string temp = filter.Waarde;
        inner = inner.Or(o => o.OnderzoekType == temp);
    }
}

invoerDatums = invoerDatums.And(inner);
var onderzoeksVragen = entities.OnderzoeksVragen
                               .AsExpandable()
                               .Where(invoerDatums)
                               .ToList();
Run Code Online (Sandbox Code Playgroud)

当我运行代码时,只有一个过滤器,它不是日期过滤器.因此只有内部谓词被填充.执行谓词时出现以下错误.

参数"f"未绑定在指定的LINQ to Entities查询表达式中.

在搜索答案时,我找到了以下页面.但这已经在LINQKit中实现了.

是否有其他人遇到此错误并知道如何解决?

c# linq-to-entities predicatebuilder

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

实体框架中join子句中的一个表达式的类型不正确

在尝试执行此查询时:

var query = from dpr in ctx.DPR_MM
            join q in ctx.QOT on dpr.DPR_QOT_ID equals qot_id
            join p in ctx.PAY_MM on new { q.QOT_SEC_ID, dpr.DPR_TS } equals new { p.PAY_SEC_ID, p.PAY_DATE }
            where q.QOT_ID = qot_id
            select new
            {
                dpr.dpr_ts,
                dpr.dpr_close,
                pay.First().pay_dividend
            };
Run Code Online (Sandbox Code Playgroud)

我收到这个错误:

join子句中某个表达式的类型不正确.调用"加入"时类型推断失败.

QOT_SEC_ID是类型decimalPAY_SEC_ID类型int32.我不允许在表格中更改它.

无论我做什么,我都无法在模特的属性中改变它.我试图转换像这样的类型:

join p in ctx.PAY on new { sec_id = (Int32)(q.QOT_SEC_ID), dpr.DPR_TS } equals new { sec_id = (Int32)p.PAY_SEC_ID, p.PAY_DATE }
Run Code Online (Sandbox Code Playgroud)

但得到上面的错误.

c# linq linq-to-entities entity-framework join

54
推荐指数
2
解决办法
5万
查看次数

linq中.edmx和.dbml文件有什么区别?

linq中.edmx和.dbml文件有什么区别?在VS 2008中哪个数据源是edmx或dbml的最佳选择?在VS 2008中使用edmx文件会出现任何问题?我可以在VS-2008中使用edmx吗?

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

53
推荐指数
3
解决办法
4万
查看次数

Linq where子句仅比较没有时间值的日期值

var _My_ResetSet_Array = _DB
    .tbl_MyTable
    .Where(x => x.Active == true
        && x.DateTimeValueColumn <= DateTime.Now)
    .Select(x => x);
Run Code Online (Sandbox Code Playgroud)

上层查询工作正常.
但我只想检查日期值.
但是上层查询检查日期+时间值.

在传统的mssql中,我可以编写如下的查询.

SELECT * FROM dbo.tbl_MyTable
WHERE 
CAST(CONVERT(CHAR(10), DateTimeValueColumn, 102) AS DATE) <= 
            CAST(CONVERT(CHAR(10),GETDATE(),102) AS DATE)
AND
Active = 1
Run Code Online (Sandbox Code Playgroud)

所以任何人都可以给我建议我怎样才能检查Linq中的日期值.

c# datetime linq-to-entities entity-framework compare

50
推荐指数
2
解决办法
11万
查看次数

LINQ to Entities和String.StartsWith的问题

我正在尝试使用LINQ to Entities构建搜索页面,但是下面的代码给出了一个运行时错误,关于lte没有识别'Boolean StartsWith().代码编译得很好.我怎样才能解决这个问题,而不是将StartsWith过滤到存储过程?

    return from dp in dents.DirectoryPersonEntrySet
           where
               ((dp.LastName.StartsWith(searchTerm, StringComparison.CurrentCultureIgnoreCase)) ||
                (dp.Department.StartsWith(searchTerm, StringComparison.CurrentCultureIgnoreCase)) ||
                dp.Extension.StartsWith(searchTerm, StringComparison.CurrentCultureIgnoreCase))
           select dp;
Run Code Online (Sandbox Code Playgroud)

.net linq linq-to-entities entity-framework

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

如何在EF查询中执行日期比较?

请帮忙.我试图弄清楚如何在linq查询中使用DATE或DATETIME进行比较.

示例:如果我想要在今天之前启动的所有员工姓名,我会在SQL中执行以下操作:

SELECT EmployeeNameColumn
FROM EmployeeTable
WHERE StartDateColumn.Date <= GETDATE() //Today
Run Code Online (Sandbox Code Playgroud)

但是linq怎么样?

DateTime startDT = //Today

var EmployeeName =  
from e in db.employee
where e.StartDateColumn <= startDT 
Run Code Online (Sandbox Code Playgroud)

上面的WHERE不起作用:

异常详细信息:System.NotSupportedException:LINQ to Entities中不支持指定的类型成员"Date".仅支持初始值设定项,实体成员和实体导航属性.

c# linq datetime linq-to-entities datetime-comparison

49
推荐指数
5
解决办法
9万
查看次数

Linq int to string

如何将int和int转换为字符串?以下都不起作用:

from s in ctx.Services
    where s.Code.ToString().StartsWith("1")
    select s

from s in ctx.Services
    where Convert.ToString(s.Code).StartsWith("1")
    select s

from s in ctx.Services
    where ((string)s.Code).ToString().StartsWith("1")
    select s
Run Code Online (Sandbox Code Playgroud)

编辑

我得到的错误是:

LINQ to Entities does not recognize the method 'System.String ToString()' method, and this method cannot be translated into a store expression

.net linq linq-to-entities

48
推荐指数
2
解决办法
6万
查看次数

我可以在EntityFramework中的ObjectSet上使用多少Include以保持性能?

我在我的个人资料页面使用以下LINQ查询:

var userData = from u in db.Users
                        .Include("UserSkills.Skill")
                        .Include("UserIdeas.IdeaThings")
                        .Include("UserInterests.Interest")
                        .Include("UserMessengers.Messenger")
                        .Include("UserFriends.User.UserSkills.Skill")
                        .Include("UserFriends1.User1.UserSkills.Skill")
                        .Include("UserFriends.User.UserIdeas")
                        .Include("UserFriends1.User1.UserIdeas")
                               where u.UserId == userId
                               select u;
Run Code Online (Sandbox Code Playgroud)

它有一个长对象图并使用许多包含.它现在运行得很好,但是当网站有很多用户时,它会影响性能吗?

我应该用其他方式吗?

linq performance linq-to-entities entity-framework asp.net-mvc-2

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

LINQ to Entities不支持"日期".仅支持初始值设定项,实体成员和实体导航属性

我正在尝试执行以下代码并收到错误

public List<Log> GetLoggingData(DateTime LogDate, string title)
{
     var context = new LoggingEntities();
     var query = from t in context.Logs

           where t.Title == title 
           && t.Timestamp == LogDate

           select t;
     return query.ToList();
}
Run Code Online (Sandbox Code Playgroud)

我收到的错误是"LINQ to Entities不支持指定的类型成员'Date'.仅支持初始值设定项,实体成员和实体导航属性." 我已尝试过将各种符号转换为字符串的各种尝试,只比较日期部分,但似乎无法获得正确的组合.任何帮助是极大的赞赏.

c# linq linq-to-entities entity-framework

47
推荐指数
2
解决办法
5万
查看次数