标签: linq-to-sql

选择与实体框架中的位置之间的区别

实体框架.Select().Where()实体框架之间有什么区别?例如

return ContextSet().Select(x=> x.FirstName == "John")
Run Code Online (Sandbox Code Playgroud)

VS

ContextSet().Where(x=> x.FirstName == "John")
Run Code Online (Sandbox Code Playgroud)

我何时应该使用.Selectvs .Where

.net c# linq entity-framework linq-to-sql

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

实例化空IQueryable以用于Linq to sql

我需要能够在Linq查询中具有可选参数,或者如果需要从查询中删除该可选参数,则能够将查询分配给类似IF的var.

如果我在IF语句中设置查询var,那么当我尝试循环时,它告诉我var在上下文中不存在.

if (whichGroup == "All")
        {
            var listOppLineData = (from o in db.opportunity_vws
                                   where o.fiscal_yr_and_qtr == qtr
                                   select o
                                  );
        }
        else
        {
            var listOppLineData = (from o in db.opportunity_vws
                                   where o.fiscal_yr_and_qtr == qtr && o.Group == whichGroup
                                   select o
                                  );
        }

        foreach (var data in listOppLineData)  //listOppLineData doesn't exist here
        {
Run Code Online (Sandbox Code Playgroud)

我需要在我认为的IF语句之前设置var,但我不知道将它设置为什么.

var listOppLineData = ""; // gives me 
Cannot implicitly convert type 'System.Linq.IQueryable<Forecast.Models.opportunity_vw>' to 'string'

IQueryable listOppLineData = new IQueryable(); //gives me
        Cannot create an instance of …
Run Code Online (Sandbox Code Playgroud)

c# linq asp.net-mvc iqueryable linq-to-sql

47
推荐指数
4
解决办法
6万
查看次数

'CompanyName.Foo'是'命名空间',但用作'类型'

重述问题

我正在复活这个问题,因为我今天刚刚再次遇到这个错误,我仍然完全混淆为什么C#编译器无法检查命名空间和类型中的类型之间的冲突,因为命名空间不存在.

如果我有...

public Foo MyFoo { get; set; }
Run Code Online (Sandbox Code Playgroud)

...为什么编译器会关心Foo命名空间和类型?您可以将属性声明为命名空间而不是类型吗?

"名称空间使用类似"编译器错误背后的逻辑是什么?这有什么问题可以拯救我?

[我如何标记Eric Lippert?:)]


原始问题


问题

我有一个带有默认命名空间的项目"Foo" CompanyName.Foo.我有一个名为"Foo"的数据库.

当我在数据库上运行SqlMetal.exe时,它会生成一个类CompanyName.Foo.Models.Foo.

然后,当我尝试使用此类作为类型创建属性时,像这样......

using CompanyName.Foo.Models;
...
public Foo DataContext { get; set; }
Run Code Online (Sandbox Code Playgroud)

......我收到错误:

'CompanyName.Foo'是'命名空间',但用作'类型'.

我被迫做...

public CompanyName.Foo.Models.Foo Foo { get; set; } // :-(
Run Code Online (Sandbox Code Playgroud)

问题:

  1. 为什么会出现此错误?我的财产声明不包含CompanyName,为什么这是一个问题?简单地说:Foo != CompanyName.Foo.另外,为了确保,我搜索了我的整个解决方案,namespace Foo并提出了零命中(如果我实际使用了命名空间Foo,我可以理解得到错误).

  2. [回答]Foo每次我想使用它时,有没有办法完全符合条件?

  3. [回答]有没有办法让SqlMetal将类命名为Foo(不用更改我的数据库名称)?我可以使用开关更改命名空间,但我不知道如何更改实际的类名.

更新

仍在寻求(1)的答案.

OKW钉(2)和(3).

Usings

我的所有using陈述都提出了要求:

using System;
using System.ComponentModel;
using System.Data.Linq; …
Run Code Online (Sandbox Code Playgroud)

c# compiler-construction code-generation namespaces linq-to-sql

45
推荐指数
3
解决办法
6万
查看次数

Linq-to-SQL超时

我一直在我的一个页面上收到一个错误,linq查询已超时,因为它花了太长时间.它使页面无法使用.

这是一个报告页面,每天只能由管理员访问一次.根本不可避免地削减这个查询,它只需要对大量数据进行排序.

解决这个问题的解决方法我已经阅读过,通过增加数据上下文中的超时属性,但我想避免这样做,因为它会为整个网站改变它.

有没有办法为单个页面设置更长的时间?

c# asp.net timeout linq-to-sql

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

如何拒绝Linq to SQL的DataContext中的所有更改?

在Linq to SQL的DataContext上,我可以调用SubmitChanges()来提交所有更改.

我想要的是以某种方式拒绝datacontext中的所有更改并回滚所有更改(最好不要转到数据库).

这可能吗?

linq linq-to-sql

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

LINQ to SQL和存储库模式

我觉得我在圈子里跑来跑去.我似乎无法决定使用LINQ to SQL正确的存储库模式.如果您熟悉Rob Conery的 MVC店面,您将看到他的实现将LINQ生成的模型与另一个类包装在一起,并将LINQ生成的模型简单地视为数据传输对象(DTO).它看起来像这样:

//Custom wrapper class.
namespace Data
{
    public class Customer
    {
         public int Id {get;set;}
         public string Name {get;set;}
         public IList<Address> Addresses {get;set;}
    }
}

//Linq-Generated Class - severly abbreviated
namespace SqlRepository
{
    public class Customer
    {
         public int Id {get;set;}
         public string Name {get;set;}
         public EntitySet<Address> {get;set;}
    }
}

//Customer Repository
namespace SqlRepository
{
    public class UserRepository : IUserRepository
    {
        private _db = new DB(); //This is the Linq-To-Sql …
Run Code Online (Sandbox Code Playgroud)

.net asp.net-mvc repository-pattern linq-to-sql

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

使用LINQ to SQL进行更新

如何根据LINQ to SQL中的特定ID更新记录?

linq linq-to-sql

44
推荐指数
3
解决办法
10万
查看次数

如何从使用LINQ to SQL的c#方法返回匿名类型

可能重复:
LINQ to SQL:返回匿名类型?

我有一个标准的LINQ to SQL查询,它以匿名类型返回数据(包含大约6列各种数据类型的数据).

我想将此返回的对象提供给程序的其他部分,方法是将其返回给方法调用程序,或者将其分配给包含该方法的对象的属性.

如果它是匿名类型("var"),我怎么能这样做呢?

编辑 - 这是代码:

    using (ormDataContext context = new ormDataContext(connStr))
    {
        var electionInfo = from t1 in context.elections
                   join t2 in context.election_status
                   on t1.statusID equals t2.statusID
                   select new { t1, t2 };
    }
Run Code Online (Sandbox Code Playgroud)

c# linq anonymous-types linq-to-sql

44
推荐指数
4
解决办法
8万
查看次数

理解LINQ to SQL中的.AsEnumerable()

给出以下LINQ to SQL查询:

var test = from i in Imports
           where i.IsActive
           select i;
Run Code Online (Sandbox Code Playgroud)

解释的SQL语句是:

SELECT [t0].[id] AS [Id] .... FROM [Imports] AS [t0] WHERE [t0].[isActive] = 1
Run Code Online (Sandbox Code Playgroud)

假设我想在select中执行一些无法转换为SQL的操作.我的理解是,实现这一目标的传统方法是AsEnumerable()将其转换为可行的对象.

鉴于此更新的代码:

var test = from i in Imports.AsEnumerable()
           where i.IsActive
           select new 
           { 
               // Make some method call 
           };
Run Code Online (Sandbox Code Playgroud)

并更新了SQL:

SELECT [t0].[id] AS [Id] ... FROM [Imports] AS [t0] 
Run Code Online (Sandbox Code Playgroud)

注意执行的SQL语句中缺少where子句.

这是否意味着整个"Imports"表被缓存到内存中?如果表中包含大量记录,这会导致性能下降吗?

帮助我了解幕后实际发生的事情.

c# linq linq-to-sql asenumerable

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

在LINQ to SQL中检索单个记录结果的最佳方法

如果我在关键字段上查询具有条件的表,如下所示:

        var user = from u in dc.Users
                   where u.UserName == usn
                   select u;
Run Code Online (Sandbox Code Playgroud)

我知道我会得到零结果或一个结果.我是否仍然可以继续使用for-each检索结果,或者是否有其他首选方法来处理这种情况.

linq linq-to-sql

43
推荐指数
3
解决办法
7万
查看次数