Создание базы данных с помощью linq2db - PullRequest
0 голосов
/ 25 августа 2018

Я пишу небольшую программу для тестирования 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...
            }
        }

    }

Ответы [ 2 ]

0 голосов
/ 14 ноября 2018

Для создания базы данных sqlite вы должны использовать LinqToDB.DataProvider.SQLite.SQLiteTools.CreateDatabase(...) метод

0 голосов
/ 25 августа 2018

Linq2db предлагает только подход Database First , создание схемы БД из сопоставлений сущностей (подход Code First) не поддерживается "из коробки".

Однако Linq2db можетгенерировать операторы CREATE TABLE DDL из сопоставлений с помощью IDataContext.CreateTable .Смотрите также это обсуждение .

...