标签: linq-to-sql

LINQ to SQL死了还是活着?

就在我与LINQ to SQL交朋友时,似乎MS正在从它下面拉出地毯.

http://blogs.msdn.com/adonet/archive/2008/10/29/update-on-linq-to-sql-and-linq-to-entities-roadmap.aspx

从我的一点点研究来看,EF对简单的工作来说太过分了.但是在这个公告之后是否有继续使用LINQ to SQL的意义?

超越LINQ to SQL的未来,这不仅仅是发送一个糟糕的信号吗?鉴于MS在墙上投掷比特的速度,早期使用任何新比特是否合理?(而且这很好,LINQ to SQL几乎不早!).

对于我的LINQ to SQL工作,我想我会去SubSonic!

更新:一些新意见:

http://ayende.com/Blog/archive/2008/10/31/microsoft-kills-linq-to-sql.aspx

http://codebetter.com/blogs/david.hayden/archive/2008/10/31/linq-to-sql-is-dead-read-between-the-lines.aspx

linq-to-sql

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

Linq to SQL怎么做"where [column] in(values of values)"

我有一个函数,我得到一个id列表,我需要返回一个匹配与id相关的描述的列表.例如:

public class CodeData
{
    string CodeId {get; set;}
    string Description {get; set;}
}

public List<CodeData> GetCodeDescriptionList(List<string> codeIDs)
    //Given the list of institution codes, return a list of CodeData
    //having the given CodeIds
}
Run Code Online (Sandbox Code Playgroud)

因此,如果我自己创建sql,我会简单地执行以下操作(其中in子句包含codeIds参数中的所有值):

Select CodeId, Description FROM CodeTable WHERE CodeId IN ('1a','2b','3')
Run Code Online (Sandbox Code Playgroud)

在Linq to Sql中我似乎无法找到相当于"IN"的子句.到目前为止我发现的最好(不起作用)是:

 var foo = from codeData in channel.AsQueryable<CodeData>()
           where codeData.CodeId == "1" || codeData.CodeId == "2"
           select codeData;
Run Code Online (Sandbox Code Playgroud)

问题是,我无法动态生成linq到sql的"OR"子句列表,因为它们是在编译时设置的.

如何使用Linq to Sql完成检查列的where子句在动态值列表中?

linq linq-to-sql

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

ReferentialConstraint中的依赖属性映射到存储生成的列

写入数据库时​​出现此错误:

ReferentialConstraint中的依赖属性映射到存储生成的列.栏目:'PaymentId'.

public bool PayForItem(int terminalId, double paymentAmount, 
      eNums.MasterCategoryEnum  mastercategoryEnum, int CategoryId, int CategoryItemId)
    {

        using (var dbEntities = new DatabaseAccess.Schema.EntityModel())
        {
            int pinnumber = 0;
            long pinid = 1; //getPinId(terminalId,ref pinnumber) ;
            var payment = new DatabaseAccess.Schema.Payment();
            payment.CategoryId = CategoryId;
            payment.ItemCategoryId = CategoryItemId;
            payment.PaymentAmount = (decimal)paymentAmount;
            payment.TerminalId = terminalId;
            payment.PinId = pinid;

            payment.HSBCResponseCode = "";
            payment.DateActivated = DateTime.Now;
            payment.PaymentString = "Payment";
            payment.PromotionalOfferId = 1;
            payment.PaymentStatusId = (int)eNums.PaymentStatus.Paid;

            //payment.PaymentId = 1;

            dbEntities.AddToPayments(payment);
            dbEntities.SaveChanges();
        }
        return true;
    }
Run Code Online (Sandbox Code Playgroud)

架构是:

在此输入图像描述

c# sql-server-2008 linq-to-sql entity-framework-4

94
推荐指数
4
解决办法
7万
查看次数

如何在SQL Server Compact Edition数据库中解决LINQ to SQL中的"未找到或未更改行"异常?

在使用LINQ to SQL连接(针对SQL Server Compact Edition)更新一些属性后,在向DataContext执行SubmitChanges时,我得到"未找到或更改行".ChangeConflictException.

var ctx = new Data.MobileServerDataDataContext(Common.DatabasePath);
var deviceSessionRecord = ctx.Sessions.First(sess => sess.SessionRecId == args.DeviceSessionId);

deviceSessionRecord.IsActive = false;
deviceSessionRecord.Disconnected = DateTime.Now;

ctx.SubmitChanges();
Run Code Online (Sandbox Code Playgroud)

该查询生成以下SQL:

UPDATE [Sessions]
SET [Is_Active] = @p0, [Disconnected] = @p1
WHERE 0 = 1
-- @p0: Input Boolean (Size = 0; Prec = 0; Scale = 0) [False]
-- @p1: Input DateTime (Size = 0; Prec = 0; Scale = 0) [9/4/2008 5:12:02 PM]
-- Context: SqlProvider(SqlCE) Model: AttributedMetaModel Build: 3.5.21022.8
Run Code Online (Sandbox Code Playgroud)

显而易见的问题是WHERE 0 …

.net linq linq-to-sql

91
推荐指数
5
解决办法
6万
查看次数

如何使用linq to sql一次更新多行?

表:

id     userid  friendid   name    status
1      1        2         venkat  false
2      1        3         sai     true
3      1        4         arun    false
4      1        5         arjun   false
Run Code Online (Sandbox Code Playgroud)

如果用户发送userid = 1,则friendids = 2,4,5 status = true

请告诉我如何更新以上所有friendids状态的查询是真的.[2,3,4一次].?

谢谢

c# linq entity-framework linq-to-sql

89
推荐指数
3
解决办法
14万
查看次数

什么是SQL Server Profiler中的"审核注销"?

我正在运行数据导入(使用C#/ Linq),当然我正在尝试尽可能优化我的查询.为此,我正在使用SQL Server Profiler在数据库上运行跟踪,我的跟踪由我的SQL登录名过滤(这是一个可以唯一归因于我的数据导入过程的名称).

奇怪的是,我的大多数SQL语句都非常快:) - 很少有查询甚至突破1ms标记.但是我的所有查询之间的间隔是几行,其中EventClass是"审核登录"或"审核注销" - 并且"审核注销"的持续时间可以长达一分钟!

这与我在导入中使用事务的事实有关吗?如果是这样,有没有办法找到哪些是重要的查询,所以我可以清理它们?

c# linq sql-server-2005 sql-server-profiler linq-to-sql

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

条件Linq查询

我们正在研究日志查看器.该用户可以选择按用户,严重程度等进行过滤.在Sql中我会添加到查询字符串,但我想用Linq来做.我怎样才能有条件地添加where-clause?

c# linq .net-3.5 linq-to-sql

87
推荐指数
6
解决办法
8万
查看次数

Linq:有条件地在where子句中添加条件

我有这样的查询

(from u in DataContext.Users
       where u.Division == strUserDiv 
       && u.Age > 18
       && u.Height > strHeightinFeet  
       select new DTO_UserMaster
       {
         Prop1 = u.Name,
       }).ToList();
Run Code Online (Sandbox Code Playgroud)

我想根据是否将这些条件提供给运行此查询的方法来添加各种条件,如年龄,高度.所有条件都包括用户部门.如果提供了年龄,我想将其添加到查询中.同样,如果提供了高度,我也想添加它.

如果要使用sql查询完成,我会使用字符串构建器将它们附加到主strSQL查询.但是在Linq中,我只能想到使用IF条件,其中我将编写相同的查询三次,每个IF块都有一个附加条件.有一个更好的方法吗?

谢谢你的时间..

linq entity-framework linq-to-sql

87
推荐指数
6
解决办法
7万
查看次数

如何在LINQ查询中使用GROUP BY获取MAX行?

我在LINQ中寻找一种方法来匹配后面的SQL查询.

Select max(uid) as uid, Serial_Number from Table Group BY Serial_Number
Run Code Online (Sandbox Code Playgroud)

真的在寻找这方面的一些帮助.由于Group By语法,上面的查询获取每个序列号的最大值.

.net linq linq-to-sql

84
推荐指数
6
解决办法
9万
查看次数

Linq to Sql:如何快速清除表格

要删除表中的所有行,我目前正在执行以下操作:

context.Entities.DeleteAllOnSubmit(context.Entities);
context.SubmitChanges();
Run Code Online (Sandbox Code Playgroud)

然而,这似乎需要很长时间.有更快的方法吗?

c# linq-to-sql delete-row

84
推荐指数
3
解决办法
8万
查看次数