probably going to switch away from sqlite

e
This commit is contained in:
Malloc of Kuzkycyziklistan 2017-06-02 16:02:48 -05:00
parent 4d1f62b7ed
commit c8b83456c1
9 changed files with 133 additions and 55 deletions

View file

@ -14,9 +14,9 @@
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
<provider invariantName="System.Data.SQLite.EF6" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" />
<provider invariantName="System.Data.SQLite" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" />
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
<system.data>
@ -30,4 +30,16 @@
<connectionStrings>
<add name="Database" connectionString="data source=scape.db" providerName="System.Data.SQLite.EF6" />
</connectionStrings>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Data.SQLite" publicKeyToken="db937bc2d44ff139" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.0.105.0" newVersion="1.0.105.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Data.SQLite.EF6" publicKeyToken="db937bc2d44ff139" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.0.105.0" newVersion="1.0.105.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>

View file

@ -44,15 +44,13 @@
</PropertyGroup>
<ItemGroup>
<Reference Include="EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
<HintPath>packages\EntityFramework.6.0.0\lib\net45\EntityFramework.dll</HintPath>
<Private>True</Private>
<HintPath>packages\EntityFramework.6.1.3\lib\net45\EntityFramework.dll</HintPath>
</Reference>
<Reference Include="EntityFramework.SqlServer, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
<HintPath>packages\EntityFramework.6.0.0\lib\net45\EntityFramework.SqlServer.dll</HintPath>
<Private>True</Private>
<HintPath>packages\EntityFramework.6.1.3\lib\net45\EntityFramework.SqlServer.dll</HintPath>
</Reference>
<Reference Include="SQLite.Designer">
<HintPath>..\..\..\..\..\..\Program Files (x86)\System.Data.SQLite\2015\bin\SQLite.Designer.dll</HintPath>
<Reference Include="log4net, Version=1.2.15.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a, processorArchitecture=MSIL">
<HintPath>packages\log4net.2.0.5\lib\net45-full\log4net.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.ComponentModel.DataAnnotations" />
@ -65,6 +63,9 @@
<HintPath>packages\System.Data.SQLite.EF6.1.0.105.0\lib\net46\System.Data.SQLite.EF6.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="System.Data.SQLite.EF6.Migrations, Version=1.0.104.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>packages\System.Data.SQLite.EF6.Migrations.1.0.104\lib\System.Data.SQLite.EF6.Migrations.dll</HintPath>
</Reference>
<Reference Include="System.Data.SQLite.Linq, Version=1.0.105.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL">
<HintPath>packages\System.Data.SQLite.Linq.1.0.105.0\lib\net46\System.Data.SQLite.Linq.dll</HintPath>
<Private>True</Private>
@ -80,6 +81,8 @@
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="DAL\Item.cs" />
<Compile Include="DAL\ItemDefinition.cs" />
<Compile Include="DAL\ScapeDb.cs" />
<Compile Include="DAL\Session.cs" />
<Compile Include="DAL\User.cs" />
@ -137,8 +140,7 @@
<Error Condition="!Exists('packages\Costura.Fody.1.4.0\build\Costura.Fody.targets')" Text="$([System.String]::Format('$(ErrorText)', 'packages\Costura.Fody.1.4.0\build\Costura.Fody.targets'))" />
</Target>
<PropertyGroup>
<PostBuildEvent>COPY "$(ProjectDir)scape.db" "$(TargetDir)"
XCOPY "$(ProjectDir)Assets" "$(TargetDir)" /Y</PostBuildEvent>
<PostBuildEvent>XCOPY "$(ProjectDir)Assets" "$(TargetDir)" /Y</PostBuildEvent>
</PropertyGroup>
<Import Project="packages\Fody.2.0.4\build\dotnet\Fody.targets" Condition=" '$(Configuration)' == 'Release' " />
<Import Project="packages\Costura.Fody.1.4.0\build\Costura.Fody.targets" Condition=" '$(Configuration)' == 'Release' " />

22
server/DAL/Item.cs Normal file
View file

@ -0,0 +1,22 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CircleScape.DAL {
public class Item {
public long Id { get; set; }
[Index("ItemItemDefinitionId")]
public long DefinitionId { get; set; }
public virtual ItemDefinition Definition { get; set; }
[Index("ItemUserId")]
public long UserId { get; set; }
public virtual User User { get; set; }
public long Quantity { get; set; }
}
}

View file

@ -0,0 +1,22 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Data.Entity.Spatial;
namespace CircleScape.DAL {
public partial class ItemDefinition {
public long Id { get; set; }
[Required]
public string Name { get; set; }
[Required]
public string Sheet { get; set; }
public long Offset { get; set; }
public bool Stackable { get; set; } = false;
public virtual ICollection<Item> Items { get; set; }
}
}

View file

@ -1,22 +1,55 @@
namespace CircleScape.DAL {
using System;
using System.Data.Entity;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Data.Entity.Migrations;
using System.Data.SQLite.EF6.Migrations;
namespace CircleScape.DAL {
public partial class ScapeDb : DbContext {
static ScapeDb() {
Database.SetInitializer(
new MigrateDatabaseToLatestVersion<ScapeDb, ScapeDbMigrationConfig>(true)
);
}
public ScapeDb() : base("name=Database") {
public partial class Database : DbContext {
public Database()
: base("name=Database") {
}
public virtual DbSet<Session> Sessions { get; set; }
public virtual DbSet<User> Users { get; set; }
public virtual DbSet<Item> Items { get; set; }
public virtual DbSet<ItemDefinition> ItemDefinitions { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder) {
modelBuilder.Entity<User>()
.HasMany(e => e.Sessions)
.WithRequired(e => e.User)
.WillCascadeOnDelete(false);
.HasForeignKey(e => e.UserId)
.WillCascadeOnDelete(true);
modelBuilder.Entity<User>()
.HasMany(e => e.Items)
.WithRequired(e => e.User)
.HasForeignKey(e => e.UserId)
.WillCascadeOnDelete(true);
modelBuilder.Entity<ItemDefinition>()
.HasMany(e => e.Items)
.WithRequired(e => e.Definition)
.HasForeignKey(e => e.DefinitionId)
.WillCascadeOnDelete(true);
}
}
internal sealed class ScapeDbMigrationConfig
: DbMigrationsConfiguration<ScapeDb>
{
public ScapeDbMigrationConfig() {
AutomaticMigrationsEnabled = true;
AutomaticMigrationDataLossAllowed = true;
SetSqlGenerator("System.Data.SQLite", new SQLiteMigrationSqlGenerator());
}
}
}

View file

@ -1,21 +1,18 @@
namespace CircleScape.DAL
{
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Data.Entity.Spatial;
public partial class Session
{
namespace CircleScape.DAL {
public partial class Session {
public long Id { get; set; }
[Index("SessionUserId")]
public long UserId { get; set; }
public virtual User User { get; set; }
[Required]
[StringLength(2147483647)]
public string IpAddress { get; set; }
public virtual User User { get; set; }
}
}

View file

@ -1,27 +1,17 @@
namespace CircleScape.DAL
{
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Data.Entity.Spatial;
public partial class User
{
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
public User()
{
Sessions = new HashSet<Session>();
}
namespace CircleScape.DAL {
public partial class User {
public long Id { get; set; }
[Required]
[StringLength(2147483647)]
public string Username { get; set; }
[Required]
[StringLength(2147483647)]
public string Password { get; set; }
public long? Joined { get; set; }
@ -29,13 +19,11 @@ namespace CircleScape.DAL
public long? LastLogin { get; set; }
[Required]
[StringLength(2147483647)]
public string JoinedIp { get; set; }
[StringLength(2147483647)]
public string LastIp { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<Session> Sessions { get; set; }
public virtual ICollection<Item> Items { get; set; }
}
}

View file

@ -11,7 +11,7 @@ using Square;
namespace CircleScape {
class Entrypoint {
static void Main(string[] args) {
var db = new Database();
var db = new ScapeDb();
var users = db.Users.ToList();
var server = new Kneesocks.Server<PendingConnection>(6770, PoolManager.Pending);

View file

@ -1,10 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Costura.Fody" version="1.4.0" targetFramework="net46" developmentDependency="true" />
<package id="EntityFramework" version="6.0.0" targetFramework="net46" />
<package id="EntityFramework" version="6.1.3" targetFramework="net46" />
<package id="Fody" version="2.0.4" targetFramework="net46" developmentDependency="true" />
<package id="log4net" version="2.0.5" targetFramework="net46" />
<package id="System.Data.SQLite" version="1.0.105.0" targetFramework="net46" />
<package id="System.Data.SQLite.Core" version="1.0.105.0" targetFramework="net46" />
<package id="System.Data.SQLite.EF6" version="1.0.105.0" targetFramework="net46" />
<package id="System.Data.SQLite.EF6.Migrations" version="1.0.104" targetFramework="net46" />
<package id="System.Data.SQLite.Linq" version="1.0.105.0" targetFramework="net46" />
</packages>