fix #4855 - dropping required column causes issue on SQLite
This commit is contained in:
parent
043fb1abd1
commit
7d94e4a53a
32
Oqtane.Server/Migrations/Tenant/06000101_AddLanguageName.cs
Normal file
32
Oqtane.Server/Migrations/Tenant/06000101_AddLanguageName.cs
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
using Microsoft.EntityFrameworkCore.Infrastructure;
|
||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
using Oqtane.Databases.Interfaces;
|
||||||
|
using Oqtane.Migrations.EntityBuilders;
|
||||||
|
using Oqtane.Repository;
|
||||||
|
|
||||||
|
namespace Oqtane.Migrations.Tenant
|
||||||
|
{
|
||||||
|
[DbContext(typeof(TenantDBContext))]
|
||||||
|
[Migration("Tenant.06.00.01.01")]
|
||||||
|
public class AddLanguageName : MultiDatabaseMigration
|
||||||
|
{
|
||||||
|
public AddLanguageName(IDatabase database) : base(database)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
// Name column was removed in 5.2.4 however SQLite does not support column removal so it had to be restored
|
||||||
|
if (ActiveDatabase.Name != "Sqlite")
|
||||||
|
{
|
||||||
|
var languageEntityBuilder = new LanguageEntityBuilder(migrationBuilder, ActiveDatabase);
|
||||||
|
languageEntityBuilder.AddStringColumn("Name", 100, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void Down(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
// not implemented
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -31,7 +31,7 @@ namespace Oqtane.Repository
|
||||||
.ToList()
|
.ToList()
|
||||||
.ForEach(l => l.IsDefault = false);
|
.ForEach(l => l.IsDefault = false);
|
||||||
}
|
}
|
||||||
|
language.Name = ""; // stored in database but not used (SQLite limitation)
|
||||||
db.Language.Add(language);
|
db.Language.Add(language);
|
||||||
db.SaveChanges();
|
db.SaveChanges();
|
||||||
|
|
||||||
|
@ -55,6 +55,7 @@ namespace Oqtane.Repository
|
||||||
.ForEach(l => l.IsDefault = false);
|
.ForEach(l => l.IsDefault = false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
language.Name = ""; // stored in database but not used (SQLite limitation)
|
||||||
db.SaveChanges();
|
db.SaveChanges();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -56,7 +56,9 @@ namespace Oqtane.Models
|
||||||
public string Description { get; set; }
|
public string Description { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Deprecated - not used
|
/// Deprecated
|
||||||
|
/// Note that this property still exists in the database because columns cannot be dropped in SQLite
|
||||||
|
/// Therefore the property must be retained/mapped even though the framework no longer uses it
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool? IsDeleted { get; set; }
|
public bool? IsDeleted { get; set; }
|
||||||
|
|
||||||
|
|
|
@ -63,7 +63,9 @@ namespace Oqtane.Models
|
||||||
public bool IsSystem { get; set; }
|
public bool IsSystem { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Deprecated - not used
|
/// Deprecated
|
||||||
|
/// Note that this property still exists in the database because columns cannot be dropped in SQLite
|
||||||
|
/// Therefore the property must be retained/mapped even though the framework no longer uses it
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool? IsDeleted { get; set; }
|
public bool? IsDeleted { get; set; }
|
||||||
|
|
||||||
|
|
|
@ -29,9 +29,10 @@ namespace Oqtane.Models
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool IsDefault { get; set; }
|
public bool IsDefault { get; set; }
|
||||||
|
|
||||||
[NotMapped]
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Language Name - corresponds to <see cref="Culture.DisplayName"/>, _not_ <see cref="Culture.Name"/>
|
/// Language Name - corresponds to <see cref="Culture.DisplayName"/>, _not_ <see cref="Culture.Name"/>
|
||||||
|
/// Note that this property still exists in the database because columns cannot be dropped in SQLite
|
||||||
|
/// Therefore the property must be retained/mapped even though the framework populates it from the Culture API
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string Name { get; set; }
|
public string Name { get; set; }
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user