Я использую. Net Framework 4.7, EF 6 и SQLite (System.Data.SQLite), и насколько я понимаю, SQLite не создает таблицы автоматически. Но как правильно создать их вручную, чтобы. Net их понимал и правильно загружал? Насколько я понимаю, мне нужно создать отдельную таблицу для каждого класса. Но как я могу ie соединить их вместе, если у меня есть другие пользовательские классы в некоторых классах? И если количество баз данных (DbSet) не соответствует количеству классов (то есть есть классы, которые не представлены через DbSet, но где они представлены более 1 раза).
Итак, вы можете дать мне пример для пользователей и всех пользовательских классов, которые используются в нем? Как видите, я начал создавать эти таблицы, но столкнулся с этими проблемами. К тому же, насколько я понимаю, есть строгие правила именования, эт c.
namespace MarketBotProject
{
using System;
using System.Collections.Generic;
using System.Data.Entity;
public class ContextClass : DbContext
{
public ContextClass() : base("name=Model1")
{
Database.CreateIfNotExists();
Database.Initialize(true);
using(ContextClass CC = new ContextClass())
{
CC.Database.ExecuteSqlCommand("CREATE TABLE IF NOT EXISTS 'Categories' ('Id' INT PRIMARY KEY, 'Name64' TEXT, 'Parent64' TEXT, 'Price' DOUBLE)");
CC.Database.ExecuteSqlCommand("CREATE TABLE IF NOT EXISTS 'Goods' ('Id' INT PRIMARY KEY, 'CategoryId' INT, 'Text64' TEXT)");
CC.SaveChanges();
}
}
public virtual DbSet<Category> Categories { get; set; }
public virtual DbSet<Item> Goods { get; set; }
public virtual DbSet<BUser> Users { get; set; }
public virtual DbSet<PartnershipRequest> PartnershipRequests { get; set; }
public virtual DbSet<Promocode> Promocodes { get; set; }
public virtual DbSet<xPub> xPubs { get; set; }
public virtual DbSet<HPayment> HPayments { get; set; }
}
public class Category
{
public int Id { get; set; }
public string Name64 { get; set; }
public string Parent64 { get; set; } = null;
public double Price { get; set; } = -1;
}
public class Item
{
public int Id { get; set; }
public int CategoryId { get; set; }
public string Text64 { get; set; }
}
public class Order
{
public int Id { get; set; }
public int BUserId { get; set; }
public Item Product { get; set; } = new Item();
public int Count { get; set; } = 1;
}
public class Balance
{
public int Id { get; set; }
public int BUserId { get; set; }
public double Available { get; set; } = 0;
public double Frozen { get; set; } = 0;
public double Spent { get; set; } = 0;
}
public class BUser
{
public int Id { get; set; }
public Promocode Promo { get; set; } = null;
public List<Order> Cart { get; set; } = new List<Order>();
public List<int> OrderIds { get; set; } = new List<int>();
public Balance CommonBalance { get; set; } = new Balance();
public Balance PartnerBalance { get; set; } = new Balance();
public BTCAddress Address { get; set; } = null;
public int Referrals { get; set; } = 0;
public int Role { get; set; } = 0;
public string RoleDescription64 { get; set; } = "";
public string Page { get; set; } = "Default";
public Category Cat { get; set; } = null;
}
public class PartnershipRequest
{
public int Id { get; set; }
public int BUserId { get; set; }
public string Username64 { get; set; }
public string Nickname64 { get; set; }
public double Sum { get; set; }
public string Address64 { get; set; }
}
public class Promocode
{
public int Id { get; set; }
public string Code64 { get; set; }
public int OwnerId { get; set; }
public bool Used { get; set; } = false;
}
public class xPub
{
public int Id { get; set; }
public string Key64 { get; set; }
public List<BTCAddress> Addresses { get; set; } = new List<BTCAddress>();
}
public class BTCAddress
{
public int Id { get; set; }
public string Address { get; set; }
public bool Blocked { get; set; } = false;
public DateTime Assigned { get; set; } = DateTime.Now;
public double StartedBalance { get; set; }
}
public class HPayment
{
public int Id { get; set; }
public int BUserId { get; set; }
public string Username64 { get; set; }
public string Nickname64 { get; set; }
public double BTC { get; set; }
public double USD { get; set; }
public DateTime DT { get; set; } = DateTime.Now;
public List<Item> Items { get; set; } = new List<Item>();
}
}