首页 > 解决方案 > 使用 linq2db 创建数据库

问题描述

我正在编写一个小程序来测试 linq2db。如果数据库尚不存在,我想要做的是创建数据库。大多数(全部?) linq2db 文档都假定现有数据库。我检查数据库是否存在,如果不存在,则使用 CreateCommand 创建一个空数据库,如下所示。Intellisense 表示此方法“仅供内部使用”。可以使用 CreateCommand 还是有更好的方法?

namespace SqliteTest
{
    public partial class ImageDatabaseDB : LinqToDB.Data.DataConnection
    {
        public ITable<testTable> testTables { get { return this.GetTable<testTable>(); } }

        public void InitMappingSchema()
        {
        }
        public ImageDatabaseDB()
        {
            InitDataContext();
            InitMappingSchema();
        }
        public ImageDatabaseDB(string configuration) : base(configuration)
        {
            InitDataContext();
            InitMappingSchema();
        } 
        partial void InitDataContext();
    }
    [Table("testTable")]
    public partial class testTable
    {
        [PrimaryKey, Identity] public int id;
        [Column, NotNull] public string Name;
        [Column, Nullable] public string Description;
    }
    public static partial class TableExtensions
    {
        public static testTable Find(this ITable<testTable> table, long id)
        {
            return table.FirstOrDefault(t =>
                t.id == id);
        }
    }
class Program
{
    static void Main(string[] args)
    {
        const string dbLocation = @".\TestDatabase\TestDatabase.sqlite";
        if (!File.Exists(dbLocation))
        {
            using (var db = new TestDatabaseDB())
            {
                db.CreateCommand(); 
                // create tables...
            }
        }

    }

标签: c#linq2db

解决方案


要创建 sqlite 数据库,您应该使用LinqToDB.DataProvider.SQLite.SQLiteTools.CreateDatabase(...)方法


推荐阅读