Tag: linq to sql

强类型DataContext如何工作?

这是我今天早些时候提出的问题的深入延续, 我仍然难以理解。 我正在为我的应用程序使用强类型DataContext,虽然它发出警告,但它神奇地起作用。 它是如何做到的? 这是通常用于使用LINQ-to-SQL连接到数据库的代码。 class MyDatabase : DataContext { public Table Widgets; public Table Cars; public MyDatabase (string connection) : base(connection) { } } 即使它发出警告,它也可以开箱即用。 可以使用以下方法开始阅读: using (var db = new MyDatabase(connectionString)) { foreach (var w in db.Widgets) Console.WriteLine(w); } Widgets似乎是MyDatabase类的一个字段。 在我的代码中,我不会将它分配给任何东西。 但在其他地方,我正在阅读它并且它具有价值。 为什么? 在LINQ-to-SQL的其他示例中,包括由Visual Studio 2008的DBML布局工具生成的代码,数据上下文类可能如下所示: public partial class MyDatabase : DataContext { […]

Linq to SQL / Linq to Entities可以生成MERGE语句吗?

寻找一个组合的INSERT / UPDATE / DELETE语句,MERGE正是我所需要的,但我似乎无法找到LINQ / SQL是否支持它(来自http://www.sqlbook.com/SQL-Server/SQL- MERGE-35.aspx ) — Merge order items into OrderItems table MERGE INTO OrderItem As oi USING @UpdatedItems ui ON (oi.OrderID = ui.OrderID AND oi.ProductID = ui.ProductID) WHEN MATCHED THEN UPDATE SET Quantity = ui.Quantity, UnitCost = ui.UnitCost WHEN NOT MATCHED THEN INSERT (OrderID, ProductID, Quantity, UnitCost) VALUES (@OrderID, ui.ProductID, […]

如何使用LINQ2SQL连接两个不同上下文的表?

我的应用程序中有2个数据上下文(不同的数据库),并且需要能够在上下文中查询上下文中的表,并在上下文中的表上使用右连接。如何在LINQ2SQL中执行此操作? 为什么?:我们正在使用SaaS产品来跟踪我们的时间,项目等,并希望向此产品发送新的服务请求,以防止我们的团队重复数据输入。 上下文A:此数据库存储服务请求信息。 它是第三方数据库,我们无法对此数据库的结构进行更改,因为它可能会在下游产生意外的不可支持的后果。 上下文B:该数据存储已处理的服务请求的“日志”数据。 我和我的团队可以完全控制这个数据库的结构等。未经处理的服务请求应该进入这个数据库,另一个进程会将其识别为未处理并将记录发送到SaaS产品。 这是我要修改的查询。 我最初能够做一个!list.Contains(c.swHDCaseId),但这不能处理超过2100项。 有没有办法将连接添加到其他上下文? var query = (from c in contextA.Cases where monitoredInboxList.Contains(c.INBOXES.inboxName) //right join d in contextB.CaseLog on d.ID = c.ID…. select new { //setup fields here… });

linq2sql图像保存问题

我有一个具有属性的对象: [Column] public Binary Image { get; set; } 当第一次保存对象时,每次都可以,但是当它被修改时,我在SubmitChanges上得到一个例外: 数据类型image和varbinary(max)在等于运算符中不兼容。 这可能是什么问题?

LinqToSql预编译查询有什么好处?

我正在查看在Nutshell书中从C#4.0中获取的LINQPad提供的示例LINQ查询,并查看了我从未在LINQ to SQL中使用的内容…编译查询。 这是确切的例子: // LINQ to SQL lets you precompile queries so that you pay the cost of translating // the query from LINQ into SQL only once. In LINQPad the typed DataContext is // called TypeDataContext, so we proceed as follows: var cc = CompiledQuery.Compile ((TypedDataContext dc, decimal minPrice) => from c in […]

方法x没有支持的SQL转换

我想编写一个查询,该查询应该获取用户对象以及用户已经发布的消息量。 我这样做的方式如下: var query = (from u in _db.Repository() where u.IsDeleted != true select new UserWithMessagecount() { User = u MessageCount = GetUserMessageCount(u.Documents).Count(), }); 我正在使用一种方法,因为有些消息应该被过滤掉(以动态的方式) 。 为了简单起见,我将发布函数而不排序逻辑(仍会产生相同的错误)。 private EntitySet GetUserMessageCount(EntitySet set) { return set; } 返回的错误是: 方法’x’没有支持的SQL转换。 有关如何解决此问题的任何想法?

使用匿名类型时,在“加入”调用中类型推断失败

我对LINQ to SQL有一个特殊的问题: 这样做很好: from s in Something join a in AnotherThing on s.NullableDateTime.Value equals a.DateTime select s 但是,使用匿名类型如下: from s in Something join a in AnotherThing on new { s.NullableDateTime.Value } equals new { a.DateTime } select s 结果是 join子句中某个表达式的类型不正确。 调用“加入”时类型推断失败。 我需要使用匿名类型,因为我的目标是添加另一列来加入。 有关为什么会发生这种情况以及如何解决的任何想法?

什么更快? 结构数组或DataTable

我使用LinqToSQL处理来自SQL Server的数据,将其转储到iSeries服务器中进行进一步处理。 关于这里的更多细节 。 我的问题是处理这350行数据需要大约1.25分钟。 我仍在尝试从SQL Server Profiler中解析结果,但是有一大堆查询正在运行。 以下是我正在做的事情的更多细节: using (CarteGraphDataDataContext db = new CarteGraphDataDataContext()) { var vehicles = from a in db.EquipmentMainGenerals join b in db.EquipmentMainConditions on a.wdEquipmentMainGeneralOID equals b.wdEquipmentMainGeneralOID where b.Retired == null orderby a.VehicleId select a; et = new EquipmentTable[vehicles.Count()]; foreach (var vehicle in vehicles) { // Move data to the array […]

LINQ多对多关系:解决方案?

LINQ到目前为止一直非常优雅,但是为了执行基本的m2m查询,它提供了我无法立即看到的解决方案。 更糟糕的是,虽然它适用于任何其他表关系,但LINQ并没有给我一个关于我的m2m表的类结构的关联。 所以我可以这样做 artwork.artists.where(…) //or artist.Artworks.add(artwork) 但我不能这样做 artwork.artowrks_subjects.tagSubjects.where(…) //or tagSubject.artworks_subjects.add(artwork) 替代文字http://img299.imageshack.us/img299/257/20090902122107.png 是否有解决此限制的常见模式?

LINQ to SQL的特性

我遇到了LINQ to SQL的一些特性。 使用相对简单的查询,我想选择一些字段,但将日期字段格式化为字符串,我首先这样做: var list = dataContext.MyLists.Single(x => x.ID == myId); var items = from i in list.MyItems select new { i.ID, i.Sector, i.Description, CompleteDate = i.CompleteDate.HasValue ? i.CompleteDate.Value.ToShortDateString() : “”, DueDate = i.DueDate.HasValue ? i.DueDate.Value.ToShortDateString() : “” }; 后来我尝试了以下查询,这是完全相同的,除了我直接从我的dataContext查询,而不是我的第一个查询中的一个元素: var items = from i in dataContext.MyLists select new { i.ID, i.Sector, i.Description, CompleteDate […]