diff --git a/osu.Game/Migrations/20190223075005_AddUserIDColumn.Designer.cs b/osu.Game/Migrations/20190223075005_AddUserIDColumn.Designer.cs
deleted file mode 100644
index e576b57bef..0000000000
--- a/osu.Game/Migrations/20190223075005_AddUserIDColumn.Designer.cs
+++ /dev/null
@@ -1,487 +0,0 @@
-//
-using System;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Migrations;
-using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
-using osu.Game.Database;
-
-namespace osu.Game.Migrations
-{
- [DbContext(typeof(OsuDbContext))]
- [Migration("20190223075005_AddUserIDColumn")]
- partial class AddUserIDColumn
- {
- protected override void BuildTargetModel(ModelBuilder modelBuilder)
- {
-#pragma warning disable 612, 618
- modelBuilder
- .HasAnnotation("ProductVersion", "2.2.1-servicing-10028");
-
- modelBuilder.Entity("osu.Game.Beatmaps.BeatmapDifficulty", b =>
- {
- b.Property("ID")
- .ValueGeneratedOnAdd();
-
- b.Property("ApproachRate");
-
- b.Property("CircleSize");
-
- b.Property("DrainRate");
-
- b.Property("OverallDifficulty");
-
- b.Property("SliderMultiplier");
-
- b.Property("SliderTickRate");
-
- b.HasKey("ID");
-
- b.ToTable("BeatmapDifficulty");
- });
-
- modelBuilder.Entity("osu.Game.Beatmaps.BeatmapInfo", b =>
- {
- b.Property("ID")
- .ValueGeneratedOnAdd();
-
- b.Property("AudioLeadIn");
-
- b.Property("BaseDifficultyID");
-
- b.Property("BeatDivisor");
-
- b.Property("BeatmapSetInfoID");
-
- b.Property("Countdown");
-
- b.Property("DistanceSpacing");
-
- b.Property("GridSize");
-
- b.Property("Hash");
-
- b.Property("Hidden");
-
- b.Property("LetterboxInBreaks");
-
- b.Property("MD5Hash");
-
- b.Property("MetadataID");
-
- b.Property("OnlineBeatmapID");
-
- b.Property("Path");
-
- b.Property("RulesetID");
-
- b.Property("SpecialStyle");
-
- b.Property("StackLeniency");
-
- b.Property("StarDifficulty");
-
- b.Property("Status");
-
- b.Property("StoredBookmarks");
-
- b.Property("TimelineZoom");
-
- b.Property("Version");
-
- b.Property("WidescreenStoryboard");
-
- b.HasKey("ID");
-
- b.HasIndex("BaseDifficultyID");
-
- b.HasIndex("BeatmapSetInfoID");
-
- b.HasIndex("Hash");
-
- b.HasIndex("MD5Hash");
-
- b.HasIndex("MetadataID");
-
- b.HasIndex("OnlineBeatmapID")
- .IsUnique();
-
- b.HasIndex("RulesetID");
-
- b.ToTable("BeatmapInfo");
- });
-
- modelBuilder.Entity("osu.Game.Beatmaps.BeatmapMetadata", b =>
- {
- b.Property("ID")
- .ValueGeneratedOnAdd();
-
- b.Property("Artist");
-
- b.Property("ArtistUnicode");
-
- b.Property("AudioFile");
-
- b.Property("AuthorString")
- .HasColumnName("Author");
-
- b.Property("BackgroundFile");
-
- b.Property("PreviewTime");
-
- b.Property("Source");
-
- b.Property("Tags");
-
- b.Property("Title");
-
- b.Property("TitleUnicode");
-
- b.HasKey("ID");
-
- b.ToTable("BeatmapMetadata");
- });
-
- modelBuilder.Entity("osu.Game.Beatmaps.BeatmapSetFileInfo", b =>
- {
- b.Property("ID")
- .ValueGeneratedOnAdd();
-
- b.Property("BeatmapSetInfoID");
-
- b.Property("FileInfoID");
-
- b.Property("Filename")
- .IsRequired();
-
- b.HasKey("ID");
-
- b.HasIndex("BeatmapSetInfoID");
-
- b.HasIndex("FileInfoID");
-
- b.ToTable("BeatmapSetFileInfo");
- });
-
- modelBuilder.Entity("osu.Game.Beatmaps.BeatmapSetInfo", b =>
- {
- b.Property("ID")
- .ValueGeneratedOnAdd();
-
- b.Property("DeletePending");
-
- b.Property("Hash");
-
- b.Property("MetadataID");
-
- b.Property("OnlineBeatmapSetID");
-
- b.Property("Protected");
-
- b.Property("Status");
-
- b.HasKey("ID");
-
- b.HasIndex("DeletePending");
-
- b.HasIndex("Hash")
- .IsUnique();
-
- b.HasIndex("MetadataID");
-
- b.HasIndex("OnlineBeatmapSetID")
- .IsUnique();
-
- b.ToTable("BeatmapSetInfo");
- });
-
- modelBuilder.Entity("osu.Game.Configuration.DatabasedSetting", b =>
- {
- b.Property("ID")
- .ValueGeneratedOnAdd();
-
- b.Property("IntKey")
- .HasColumnName("Key");
-
- b.Property("RulesetID");
-
- b.Property("StringValue")
- .HasColumnName("Value");
-
- b.Property("Variant");
-
- b.HasKey("ID");
-
- b.HasIndex("RulesetID", "Variant");
-
- b.ToTable("Settings");
- });
-
- modelBuilder.Entity("osu.Game.IO.FileInfo", b =>
- {
- b.Property("ID")
- .ValueGeneratedOnAdd();
-
- b.Property("Hash");
-
- b.Property("ReferenceCount");
-
- b.HasKey("ID");
-
- b.HasIndex("Hash")
- .IsUnique();
-
- b.HasIndex("ReferenceCount");
-
- b.ToTable("FileInfo");
- });
-
- modelBuilder.Entity("osu.Game.Input.Bindings.DatabasedKeyBinding", b =>
- {
- b.Property("ID")
- .ValueGeneratedOnAdd();
-
- b.Property("IntAction")
- .HasColumnName("Action");
-
- b.Property("KeysString")
- .HasColumnName("Keys");
-
- b.Property("RulesetID");
-
- b.Property("Variant");
-
- b.HasKey("ID");
-
- b.HasIndex("IntAction");
-
- b.HasIndex("RulesetID", "Variant");
-
- b.ToTable("KeyBinding");
- });
-
- modelBuilder.Entity("osu.Game.Rulesets.RulesetInfo", b =>
- {
- b.Property("ID")
- .ValueGeneratedOnAdd();
-
- b.Property("Available");
-
- b.Property("InstantiationInfo");
-
- b.Property("Name");
-
- b.Property("ShortName");
-
- b.HasKey("ID");
-
- b.HasIndex("Available");
-
- b.HasIndex("ShortName")
- .IsUnique();
-
- b.ToTable("RulesetInfo");
- });
-
- modelBuilder.Entity("osu.Game.Scoring.ScoreFileInfo", b =>
- {
- b.Property("ID")
- .ValueGeneratedOnAdd();
-
- b.Property("FileInfoID");
-
- b.Property("Filename")
- .IsRequired();
-
- b.Property("ScoreInfoID");
-
- b.HasKey("ID");
-
- b.HasIndex("FileInfoID");
-
- b.HasIndex("ScoreInfoID");
-
- b.ToTable("ScoreFileInfo");
- });
-
- modelBuilder.Entity("osu.Game.Scoring.ScoreInfo", b =>
- {
- b.Property("ID")
- .ValueGeneratedOnAdd();
-
- b.Property("Accuracy")
- .HasColumnType("DECIMAL(1,4)");
-
- b.Property("BeatmapInfoID");
-
- b.Property("Combo");
-
- b.Property("Date");
-
- b.Property("DeletePending");
-
- b.Property("Hash");
-
- b.Property("MaxCombo");
-
- b.Property("ModsJson")
- .HasColumnName("Mods");
-
- b.Property("OnlineScoreID");
-
- b.Property("PP");
-
- b.Property("Rank");
-
- b.Property("RulesetID");
-
- b.Property("StatisticsJson")
- .HasColumnName("Statistics");
-
- b.Property("TotalScore");
-
- b.Property("UserID")
- .HasColumnName("UserID");
-
- b.Property("UserString")
- .HasColumnName("User");
-
- b.HasKey("ID");
-
- b.HasIndex("BeatmapInfoID");
-
- b.HasIndex("OnlineScoreID")
- .IsUnique();
-
- b.HasIndex("RulesetID");
-
- b.ToTable("ScoreInfo");
- });
-
- modelBuilder.Entity("osu.Game.Skinning.SkinFileInfo", b =>
- {
- b.Property("ID")
- .ValueGeneratedOnAdd();
-
- b.Property("FileInfoID");
-
- b.Property("Filename")
- .IsRequired();
-
- b.Property("SkinInfoID");
-
- b.HasKey("ID");
-
- b.HasIndex("FileInfoID");
-
- b.HasIndex("SkinInfoID");
-
- b.ToTable("SkinFileInfo");
- });
-
- modelBuilder.Entity("osu.Game.Skinning.SkinInfo", b =>
- {
- b.Property("ID")
- .ValueGeneratedOnAdd();
-
- b.Property("Creator");
-
- b.Property("DeletePending");
-
- b.Property("Hash");
-
- b.Property("Name");
-
- b.HasKey("ID");
-
- b.HasIndex("DeletePending");
-
- b.HasIndex("Hash")
- .IsUnique();
-
- b.ToTable("SkinInfo");
- });
-
- modelBuilder.Entity("osu.Game.Beatmaps.BeatmapInfo", b =>
- {
- b.HasOne("osu.Game.Beatmaps.BeatmapDifficulty", "BaseDifficulty")
- .WithMany()
- .HasForeignKey("BaseDifficultyID")
- .OnDelete(DeleteBehavior.Cascade);
-
- b.HasOne("osu.Game.Beatmaps.BeatmapSetInfo", "BeatmapSet")
- .WithMany("Beatmaps")
- .HasForeignKey("BeatmapSetInfoID")
- .OnDelete(DeleteBehavior.Cascade);
-
- b.HasOne("osu.Game.Beatmaps.BeatmapMetadata", "Metadata")
- .WithMany("Beatmaps")
- .HasForeignKey("MetadataID");
-
- b.HasOne("osu.Game.Rulesets.RulesetInfo", "Ruleset")
- .WithMany()
- .HasForeignKey("RulesetID")
- .OnDelete(DeleteBehavior.Cascade);
- });
-
- modelBuilder.Entity("osu.Game.Beatmaps.BeatmapSetFileInfo", b =>
- {
- b.HasOne("osu.Game.Beatmaps.BeatmapSetInfo")
- .WithMany("Files")
- .HasForeignKey("BeatmapSetInfoID")
- .OnDelete(DeleteBehavior.Cascade);
-
- b.HasOne("osu.Game.IO.FileInfo", "FileInfo")
- .WithMany()
- .HasForeignKey("FileInfoID")
- .OnDelete(DeleteBehavior.Cascade);
- });
-
- modelBuilder.Entity("osu.Game.Beatmaps.BeatmapSetInfo", b =>
- {
- b.HasOne("osu.Game.Beatmaps.BeatmapMetadata", "Metadata")
- .WithMany("BeatmapSets")
- .HasForeignKey("MetadataID");
- });
-
- modelBuilder.Entity("osu.Game.Scoring.ScoreFileInfo", b =>
- {
- b.HasOne("osu.Game.IO.FileInfo", "FileInfo")
- .WithMany()
- .HasForeignKey("FileInfoID")
- .OnDelete(DeleteBehavior.Cascade);
-
- b.HasOne("osu.Game.Scoring.ScoreInfo")
- .WithMany("Files")
- .HasForeignKey("ScoreInfoID");
- });
-
- modelBuilder.Entity("osu.Game.Scoring.ScoreInfo", b =>
- {
- b.HasOne("osu.Game.Beatmaps.BeatmapInfo", "Beatmap")
- .WithMany("Scores")
- .HasForeignKey("BeatmapInfoID")
- .OnDelete(DeleteBehavior.Cascade);
-
- b.HasOne("osu.Game.Rulesets.RulesetInfo", "Ruleset")
- .WithMany()
- .HasForeignKey("RulesetID")
- .OnDelete(DeleteBehavior.Cascade);
- });
-
- modelBuilder.Entity("osu.Game.Skinning.SkinFileInfo", b =>
- {
- b.HasOne("osu.Game.IO.FileInfo", "FileInfo")
- .WithMany()
- .HasForeignKey("FileInfoID")
- .OnDelete(DeleteBehavior.Cascade);
-
- b.HasOne("osu.Game.Skinning.SkinInfo")
- .WithMany("Files")
- .HasForeignKey("SkinInfoID")
- .OnDelete(DeleteBehavior.Cascade);
- });
-#pragma warning restore 612, 618
- }
- }
-}
diff --git a/osu.Game/Migrations/20190223075005_AddUserIDColumn.cs b/osu.Game/Migrations/20190223075005_AddUserIDColumn.cs
deleted file mode 100644
index 0736fe5f96..0000000000
--- a/osu.Game/Migrations/20190223075005_AddUserIDColumn.cs
+++ /dev/null
@@ -1,23 +0,0 @@
-using Microsoft.EntityFrameworkCore.Migrations;
-
-namespace osu.Game.Migrations
-{
- public partial class AddUserIDColumn : Migration
- {
- protected override void Up(MigrationBuilder migrationBuilder)
- {
- migrationBuilder.AddColumn(
- name: "UserID",
- table: "ScoreInfo",
- nullable: false,
- defaultValue: 0L);
- }
-
- protected override void Down(MigrationBuilder migrationBuilder)
- {
- migrationBuilder.DropColumn(
- name: "UserID",
- table: "ScoreInfo");
- }
- }
-}
diff --git a/osu.Game/Migrations/OsuDbContextModelSnapshot.cs b/osu.Game/Migrations/OsuDbContextModelSnapshot.cs
index d0b9dc9796..2dafedc3ac 100644
--- a/osu.Game/Migrations/OsuDbContextModelSnapshot.cs
+++ b/osu.Game/Migrations/OsuDbContextModelSnapshot.cs
@@ -14,7 +14,7 @@ namespace osu.Game.Migrations
{
#pragma warning disable 612, 618
modelBuilder
- .HasAnnotation("ProductVersion", "2.2.1-servicing-10028");
+ .HasAnnotation("ProductVersion", "2.2.0-rtm-35687");
modelBuilder.Entity("osu.Game.Beatmaps.BeatmapDifficulty", b =>
{
@@ -338,9 +338,6 @@ namespace osu.Game.Migrations
b.Property("TotalScore");
- b.Property("UserID")
- .HasColumnName("UserID");
-
b.Property("UserString")
.HasColumnName("User");
diff --git a/osu.Game/Scoring/ScoreInfo.cs b/osu.Game/Scoring/ScoreInfo.cs
index 0627ce91ef..281aadce32 100644
--- a/osu.Game/Scoring/ScoreInfo.cs
+++ b/osu.Game/Scoring/ScoreInfo.cs
@@ -114,21 +114,27 @@ namespace osu.Game.Scoring
if (User == null)
User = new User { Username = value, Id = UserID };
else
+ {
User.Username = value;
+ User.Id = UserID;
+ }
}
}
[JsonIgnore]
[Column("UserID")]
- public long UserID
+ public long? UserID
{
- get => User.Id;
+ get => User?.Id ?? 1;
set
{
if (User == null)
- User = new User { Username = UserString, Id = value };
+ User = new User { Username = UserString, Id = value};
else
+ {
User.Id = value;
+ User.Username = UserString;
+ }
}
}
diff --git a/osu.Game/Users/User.cs b/osu.Game/Users/User.cs
index acffd5073b..ff1bc3f1a5 100644
--- a/osu.Game/Users/User.cs
+++ b/osu.Game/Users/User.cs
@@ -10,7 +10,7 @@ namespace osu.Game.Users
public class User
{
[JsonProperty(@"id")]
- public long Id = 1;
+ public long? Id = 1;
[JsonProperty(@"join_date")]
public DateTimeOffset JoinDate;