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)
这将在枚举中将指定值存储为数据库中的文本.
目前我正在使用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) 在我的 SQL Server 表中,我有一个计算列。因此,对于该列,我希望在 Linq2DB 生成的代码中只包含读取语句(如“select”)而没有写入语句(如“update”)。
最简单的方法是什么?
我不希望所有更新/添加语句都显式地阻止写入此列。
我们将 Linq2DB ORM 库用于我们的 .NET ORM 模型,请参见https://github.com/linq2db/linq2db
如何仅发送更改列的更新?现在 SQL 查询包括所有的列和值
我尝试将 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) 我已将旧代码部分从 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) 我有 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)