我正在写一个小程序来测试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...
}
}
}
发布于 2018-11-14 20:03:29
要创建sqlite数据库,应使用LinqToDB.DataProvider.SQLite.SQLiteTools.CreateDatabase(...)
方法
发布于 2018-08-25 20:23:08
Linq2db offers Database First approach only,开箱即用不支持从实体映射创建DB架构(代码优先方法)。
但是,Linq2db能够通过IDataContext.CreateTable从映射生成CREATE TABLE DDL语句。另请参见this discussion。
https://stackoverflow.com/questions/52016834
复制相似问题