繁体   English   中英

在 memory db 和 SQLiteDataProvider 中使用时,Linq2db 创建表与 DateTime2(3) 失败

[英]Linq2db create table with DateTime2(3) fails when using in memory db and SQLiteDataProvider

我正在尝试在 netcore3.1 应用程序中使用 Linq2Db 和 SQLiteDataProvider 在 memory db 中创建表。 如果映射 class 具有具有属性的属性

[Column(DataType=DataType.DateTime2, Precision=3), Nullable ]

它给了我以下语法错误:

Microsoft.Data.Sqlite.SqliteException (0x80004005): SQLite Error 1: 'near ")": syntax error'.

我挖掘它生成的查询及其:

CREATE TABLE [testTable]
(
    [Id]      INTEGER         NOT NULL PRIMARY KEY AUTOINCREMENT,
    [Created] DateTime2(3, )      NULL
)

这是我正在尝试的示例:

using System;
using LinqToDB;
using LinqToDB.Data;
using LinqToDB.Mapping;

namespace InMemoryDb
{
    class Program
    {
        static void Main(string[] args)
        {
            DataConnection.AddConfiguration("default", "Data Source=Sharable;Mode=Memory;Cache=Shared", 
                new LinqToDB.DataProvider.SQLite.SQLiteDataProvider("SQLite.MS"));
            DataConnection.DefaultConfiguration = "default";
            using var db = new DataConnection("default");
            db.CreateTable<TestTable>();
        }
        
        [Table(Schema="dbo", Name="testTable")]
        public class TestTable
        {
            [Column(DataType=DataType.Int32), PrimaryKey, Identity] 
            public int       Id             { get; set; }
            [Column(DataType=DataType.DateTime2, Precision=3), Nullable] 
            public DateTime? Created { get; set; } 
        }
    }
}

为什么它使用DateTime2(3, )而不是正确的DateTime2(3)生成查询?

试试这个作为解决方法

[Column(DbType="DateTime2(3)",    Nullable          ]

您可以使用linq2db为多个数据库定义模式。 请注意,SQLite 中没有DateTime类型。

[Table(Schema="dbo", Name="testTable")]
public class TestTable
{
    [Column(DataType=DataType.Int32), PrimaryKey, Identity] 
    public int       Id             { get; set; }

    [Column(Configuration=ProviderName.SQLite, DataType=DataType.DateTime2), Nullable] 
    [Column(DataType=DataType.DateTime2, Precision=3), Nullable] 
    public DateTime? Created { get; set; } 
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM