标签: linq2db

何时使用IEnumerable将关闭连接

假设我有一些使用伪ORM的伪代码(在我的情况下,它是Linq2Db).

static IEnumerable<A> GetA()
{
  using (var db = ConnectionFactory.Current.GetDBConnection())
  {
     return from a in db.A
            select a;
  }
}
static B[] DoSmth()
{
  var aItems = GetA();
  if (!aItems.Any())
    return null;
  return aItems.Select(a => new B(a.prop1)).ToArray();
}
Run Code Online (Sandbox Code Playgroud)

Connection什么时候关闭db?在那种情况下它会被关闭吗?将关闭什么连接 - 使用语句或lambda表达式中的连接?.NET编译器正在为lambdas创建匿名类,因此它将复制到该类的连接.什么时候关闭?

不知怎的,我设法得到了Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached.物化查询,异常消失了.但我想知道这件事是如何运作的.

c# linq lambda linq2db

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

在一个原子操作中通过 linq2db 检查更新行

MS SQL 数据库表具有时间戳字段,该字段的值在更新行后发生变化。在更新之前,我想检查该行是否从其他服务更改。

我可以通过将内存中对象的时间戳值与数据库表中的值进行比较来做到这一点。

我可以通过linq2db在一个原子操作中完成它吗?

它无需检查即可工作:

db.Update(product);
Run Code Online (Sandbox Code Playgroud)

这三个查询不起作用:

db.Products.Where(p => p.timestamp == product.timestamp).Update(p => p, product);
db.Products.Update(p => p.timestamp == product.timestamp, p => product );
db.Where<DB, Product, DB>(p => p.timestamp == product.timestamp).Update(product);
Run Code Online (Sandbox Code Playgroud)

我想像这样执行sql脚本:

update Products
set ...-- all fields
where Id = @id and Timestamp = @timestamp
Run Code Online (Sandbox Code Playgroud)

c# sql database linq2db

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

使用 linq2db 执行原始 SQL 字符串

使用 linq2db ( https://github.com/linq2db/linq2db ) 我可以执行原始 SQL 字符串并将结果作为dynamic?

我正在寻找类似 ADO.NETDBCommand.ExecuteReader或 Dapper 的Query<dynamic>.

c# linq2db

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

用Linq到Sqlite创建表(linq2db)

我正在尝试做的是table在空数据库上打开连接时动态创建.我已经用Linqto 创建了模型Sqlite并成功地将它与非空数据库一起使用.

现在我正在尝试使用"新"数据库.

我做我的db.Insert如下:

    using (MyDB db = MyDB("MyConnectionName"))
    {
            Person d = new Person()
            {
                name = "mimi"
            };

            db.Insert(d);

            myLabel.Content = db.Drivers.First().name;
        }
    }
Run Code Online (Sandbox Code Playgroud)

打开一个空数据库确定.实际上是为它创建了一个0KB的文件.但是当我尝试在其中插入某些东西(或者当然是读取某些东西)时,我得到一个例外:SQL logic error or missing database

我正在使用的库:

https://github.com/linq2db/linq2db

NuGet包:

http://nuget.org/packages/linq2db.SQLite/

在开始写入空数据库文件之前,我还需要做些什么吗?

c# linq sqlite linq2db

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

如何跟踪 Linq2Db 添加、更新、删除事件?

如何使用 Linq2Db 跟踪添加、更新或删除实体行的事件?

我需要在此操作中重新计算数据库中的一些数据,最好的方法是什么?

在实体框架上,我使用自定义存储库类和自定义添加操作。也许这是 Linq2Db 中的唯一方法,但我很有趣,也许有一些捕手来通知这个事件?

linq2db .net-core asp.net-core-2.2

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

Linq2DB Nlog或日志记录

有没有一种方法可以记录使用NLog对数据库进行的所有linq2DB sql查询?

我找不到任何现实的例子。miniprofiler有一些功能,但这对我没有帮助,因为我没有经验。

拉取要求

例子2

sql nlog linq2db miniprofiler

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

具有身份的 Linq2db 插入未按预期工作

为了继续使用数据库中的数据在应用程序中工作,我使用 linq2db。

如果该对象有 ID,则在 DB 中插入对象时,预计会插入 ID;如果没有标识,则在 DB 中为此对象创建新 ID。
但目前,此方法在这两种情况下都会插入新的 id。

我可以给你举个例子:

using(var db = new EIDB())
{
  Customer.Id=20;
  Customer.Name="Greg";
  db.Insert(Customer);
}
Run Code Online (Sandbox Code Playgroud)

插入之后,我们在数据库中就有了这个名为“Greg”且 ID=1 的客户...

***有没有办法做类似的事情,但要插入之前设置的相同ID(在我们的示例中= 20)?

PS:如果我使用 NpgsqlCommand 并插入相同的数据,则插入 ID=20...

.net c# postgresql wpf linq2db

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

Linq2db:查询对象层次结构的有效方法

我使用 ac# 和 linq2db 并具有以下类/表层次结构:

public class YearlyTemplate
{
    [Column]
    public int Id { get; set; }
    public List<MonthlyTemplate> MonthlyTemplates { get; set;}
}

public class MonthlyTemplate
{
    [Column]
    public int Id { get; set; }

    [Column]
    public int YearlyTemplateId { get; set; }

    public YearlyTemplate YearlyTemplate{ get; set; }

    public List<DailyTemplate> DailyTemplates { get; set;}
}

public class DailyTemplate
{
    [Column]
    public int Id { get; set; }

    [Column]
    public int MonthlyTemplateId { get; set; }
    
    public MonthlyTemplate MonthlyTemplate …
Run Code Online (Sandbox Code Playgroud)

c# postgresql linq2db

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

如何在基于两个表的 linq2db 模板中使用 LINQ 删除多行?

我有两张桌子Productuser。现在,我想一次删除多条记录,其关系如下:我想删除与特定用户相关的所有产品。

我删除了 linq2db 模板中的多条记录代码

using (var db = new DbNorthwind())
{
  db.Product
  .Where(p => p.Discontinued)
  .Delete();
}
Run Code Online (Sandbox Code Playgroud)

但是,如何将该用户表与此代码相关联?

来源:https : //linq2db.github.io/#delete

linq linq2db

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

从数据库中提取数据时无法转换 SqlGeography

我无法SqlGeography从 MS SQL DB获取对象,我使用 .net core app 和 linq2db 作为提供程序,但我有一个例外:“无法为几何创建‘GIS_CH_DB.sys.geography’类型或‘’特定类型。 ”

但我用

var provider = (SqlServerDataProvider)DataConnection.GetRegisteredProviders()[LinqToDB.ProviderName.SqlServer2014];
            provider.AddUdtType<SqlGeography>("Geography", null, LinqToDB.DataType.Udt);
            provider.AddUdtType<SqlGeometry>("Geometry", null, LinqToDB.DataType.Udt);
Run Code Online (Sandbox Code Playgroud)

这应该将 SQLGeography 转换为正确的对象。有人知道如何解决这个问题吗?

c# geo linq2db .net-core

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

标签 统计

linq2db ×10

c# ×7

linq ×3

.net-core ×2

postgresql ×2

sql ×2

.net ×1

asp.net-core-2.2 ×1

database ×1

geo ×1

lambda ×1

miniprofiler ×1

nlog ×1

sqlite ×1

wpf ×1