标签: linq2db

LinqToDB如何将枚举存储为字符串值?

LinqToDB可以将Enum属性的值存储为Enum的字符串值而不是整数值吗?

public enum OrderType
{
    New,
    Cancel
}

[Table("Orders")]
public class Order
{
    [PrimaryKey, Identity]
    public int OrderId { get; set; }

    [Column]
    public OrderType Type { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

如何让LinqToDB将"新建"或"取消"存储到数据库而不是0或1?

更新:似乎LinqToDB的答案是在枚举上设置MapValue属性.我一直试图找到在数据对象上指定它的位置.

public enum OrderType
{
    [LinqToDB.Mapping.MapValue(Value = "NEW")]
    New,
    [LinqToDB.Mapping.MapValue(Value = "CANCEL")]
    Cancel
}
Run Code Online (Sandbox Code Playgroud)

这将在枚举中将指定值存储为数据库中的文本.

c# string enums linq2db

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

.NET c#如何使用linq2db进行大量插入?

目前我正在使用Linq2db来管理我的C#应用​​程序的sqlite数据库.现在我正在阅读一个24k +行的excel文件,我想知道如何加快我的ETL过程?

for (int row = start.Row; row <= end.Row; row++)
        {
            if (row == 1) // Title row
                continue;

            Stock stock = new Stock(Processor.GetStore(workSheet.Cells[row, 1].Text),
                            Processor.GetProduct(workSheet.Cells[row, 2].Text),
                            int.Parse(workSheet.Cells[row, 6].Text),
                            int.Parse(workSheet.Cells[row, 7].Text),
                            int.Parse(workSheet.Cells[row, 8].Text), 0, true);

            Processor.AddStock(stock, false);

        }
Run Code Online (Sandbox Code Playgroud)

尝试使用linq采用不同的方法但是我的计时结果更糟糕......

            var stocks = (from cell in workSheet.Cells["a:h"]
                      select new Stock(Processor.GetStore(workSheet.Cells[cell.Start.Row, 1].Text),
                            Processor.GetProduct(workSheet.Cells[cell.Start.Row, 2].Text),
                            int.Parse(workSheet.Cells[cell.Start.Row, 6].Text),
                            int.Parse(workSheet.Cells[cell.Start.Row, 7].Text),
                            int.Parse(workSheet.Cells[cell.Start.Row, 8].Text), 0, true)).ToList();
Run Code Online (Sandbox Code Playgroud)

我要找的是这样的:

public static void MassStockInsert(List<Stock> stocks)
    {
        using (var db = new Processor())
        {
            db.Stock
                .insert(stocks);
        } …
Run Code Online (Sandbox Code Playgroud)

c# linq sqlite linq2db

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

带有 Linq2DB 的只读列

在我的 SQL Server 表中,我有一个计算列。因此,对于该列,我希望在 Linq2DB 生成的代码中只包含读取语句(如“select”)而没有写入语句(如“update”)。

最简单的方法是什么?

我不希望所有更新/添加语句都显式地阻止写入此列。

.net c# sql-server orm linq2db

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

linq2db .NET ORM 部分更新?

我们将 Linq2DB ORM 库用于我们的 .NET ORM 模型,请参见https://github.com/linq2db/linq2db

如何仅发送更改列的更新?现在 SQL 查询包括所有的列和值

orm linq2db

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

如何在 linq2db 中使用关联

我尝试将 linq2db 与 firebird sql server 一起使用。我有两张表,它们有关系。

    [Table("REQUESTS")]
    public partial class Request
    {
        [Column("ID")]
        [PrimaryKey]
        public int Id { get; set; }

        [Column("LATEST_REQUEST_DATA_ID")]
        public int? LatestRequestDataId { get; set; }

        [Association(ThisKey="LATEST_REQUEST_DATA_ID", OtherKey="ID")]
        public virtual RequestData LatestData { get; set; }
    }

    [Table("REQUEST_DATA")]
    public class RequestData
    {

        [Column("ID")]
        [PrimaryKey]
        public int Id { get; set; }

        [Column("REQUEST_ID")]
        public int RequestId { get; set; }
    }

    public class RequestDb : DataConnection
    {
        public ITable<Request> Requests { get { return GetTable<Request>(); } } …
Run Code Online (Sandbox Code Playgroud)

c# database orm linq2db

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

Linq2DB 并插入具有标识的新项目

我已将旧代码部分从 EF 移至 linq2db,当我必须添加一个具有内部元素引用的标识的新项目时,我必须执行以下代码

     if (axAnag == null)
     {
                    axAnag = new DataModels.AX();
                    var idAnag= context.InsertWithInt32Identity(axAnag);

                    axAnag.IdAnagrafica = idAnag;
     }
Run Code Online (Sandbox Code Playgroud)

和下面的代码

        fk.AxAnagraficaAssicurati = axAnag;
        fk.StatusProtocollo = statusProtocollo;
        fk.DataEsclusione = newAnagrafica.DataEsclusione ?? condizione.DataAnnullamento;
        fk.DataInclusione = newAnagrafica.DataInclusione;
        fk.DerogaEta = newAnagrafica.DerogaEta;
        fk.ProgrCategoria = condizione.ProgessivoCategoria;
        fk.IdCondizione = condizione.Id;
        fk.IdCategoria = condizione.IdCategoria;
        fk.DataOperazioneInclusione = DateTime.Now;
        fk.HYPER = newAnagrafica.HyperService;
        //GPA ticket  2017-0017962
        fk.LimiteEtaSuperato = newAnagrafica.IsLimiteEtaSuperato;
        //GPA cr24
        fk.FlagConteggioRegolazionePremio = newAnagrafica.FlagConteggioRegolazionePremio;
        fk.IdAnagrafica = axAnag.IdAnagrafica;
Run Code Online (Sandbox Code Playgroud)

我不太清楚的是为什么我必须添加 id 和整个引用的项目?

fk.AxAnagraficaAssicurati = axAnag;
fk.IdAnagrafica = axAnag.IdAnagrafica;
Run Code Online (Sandbox Code Playgroud)

在脚手架模型中,我

    [Association(ThisKey = "IdAnagrafica", …
Run Code Online (Sandbox Code Playgroud)

linq2db

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

使用 linq2db 联合不同类型

我有 DocumentField_1 和 DocumentField_2 的类型定义,这是完全不同的。

DocumentField_1如果指定的值为true则有记录,否则记录不会存在,因此它是布尔类型。DocumentField_2 具有日期值。

我在 sql 中有以下查询,我想使用 linq2db 编写它。

已经说过这些是不同类型(布尔值和日期)的方法是什么?

select 'True' from DocumentField_1 where DocumentField_1.DocumentId = 2
union all
select CONVERT(varchar, value) from DocumentField_2 where DocumentField_2.DocumentId = 2
Run Code Online (Sandbox Code Playgroud)

DocumentField_1 的架构是

Id          -> int
DocumentId  -> int
Run Code Online (Sandbox Code Playgroud)

DocumentField_2 的架构是

Id          -> int
DocumentId  -> int
Value       -> datetime
Run Code Online (Sandbox Code Playgroud)

c# sql linq entity-framework-core linq2db

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

标签 统计

linq2db ×7

c# ×5

orm ×3

linq ×2

.net ×1

database ×1

entity-framework-core ×1

enums ×1

sql ×1

sql-server ×1

sqlite ×1

string ×1