【问题标题】:Entity Framework 7 Sqlite table creation scriptEntity Framework 7 Sqlite 建表脚本
【发布时间】:2017-03-09 14:20:08
【问题描述】:

我有一个使用 SQLite 和 EF7 的小应用程序

class User {
    public int Id { get; set; }
    public string Name { get; set; }
}

<..>

protected override void OnModelCreating(ModelBuilder mB) {
    mB.Entity<User>().HasAlternateKey(c => c.Name);
}

使用EnsureCreated(),我获得了 SQLite 数据库并检查表的创建代码:

CREATE TABLE "User" ( "Id" INTEGER NOT NULL CONSTRAINT "PK_User" 
   PRIMARY KEY AUTOINCREMENT, "Name" TEXT, CONSTRAINT "AK_User_Name" UNIQUE ("Name") )

如何使用 EF7 获取此代码?

【问题讨论】:

    标签: c# sql sqlite entity-framework-core


    【解决方案1】:

    请参阅问题 #2943。在那之前,这里有一些代码:

    using (var db = new MyContext())
    {
        var services = ((IInfrastructure<IServiceProvider)db).Instance;
        var model = services.GetService<IModel>();
        var differ = services.GetService<IMigrationsModelDiffer>();
        var generator = services.GetService<IMigrationsSqlGenerator>();
        var sqlHelper = services.GetService<ISqlGenerationHelper>();
    
        var operations = differ.GetDifferences(null, model);
        var commands = generator.Generate(operations, model);
    
        var builder = new StringBuilder();
        foreach (var command in commands)
        {
            builder
                .Append(command.CommandText)
                .AppendLine(sqlHelper.BatchTerminator);
        }
    
        // Here is the SQL.
        var sql = builder.ToString();
    }
    

    【讨论】:

      猜你喜欢
      • 2017-10-28
      • 2016-10-25
      • 2016-04-16
      • 1970-01-01
      • 2016-04-12
      • 2015-12-29
      • 1970-01-01
      • 1970-01-01
      • 2014-04-06
      相关资源
      最近更新 更多