Всем привет. Есть 5 инструментов и мне нужно с ними делать всякие стандартные вещи добавлять/удалять/изменять/показать их в таблице.
Я подключил Entitty и создал базу для каждого объекта.
Калибр, Скобы, Пробки,Резьбовые Кольца, шаблоны.
Вот код самих обьектов
abstract class ToolProduct
{
public ToolProduct() { }
public ToolProduct(string name)
{
Name = name;
}
[MinLength(4), MaxLength(15), Required]
public string Name { get; set; }
[Key]
public int Id { get; set; }
}
class Caliber : ToolProduct
{
public Caliber() { }
/// <summary>
/// Конструктор детали Калибр
/// </summary>
/// <param name="name">Наименование детали</param>
/// <param name="type">Тип детали предельный,нормальный,регулируемый</param>
public Caliber(string name, string type):base(name)
{
TypeC = type;
}
public string TypeC { get; set; }
}
class Clamp : ToolProduct
{
public Clamp() { }
/// <summary>
/// Конструктор Скобы
/// </summary>
/// <param name="name">Наименование скобы</param>
/// <param name="typesize">Тип размера 0,30,60,90,120,150</param>
/// <param name="diametrcontrol">Контроль среднего диаметра</param>
public Clamp(string name,TypeS typesize, bool diametrcontrol = false):base(name)
{
TypeSize = typesize;
DiametrControl = diametrcontrol;
}
public bool DiametrControl { get; set; }
public TypeS TypeSize { get; set; }
internal enum TypeS
{
S_0 = 0,
S_30 = 30,
S_60 = 60,
S_90 = 90,
S_120 = 120,
S_150 = 150
}
}
class Plug : ToolProduct
{
public Plug() { }
/// <summary>
/// Конструктор Пробки
/// </summary>
/// <param name="name">Наименование пробка</param>
/// <param name="type">Тип односторонний, двухсторонний </param>
public Plug(string name,string type):base(name)
{
TypePlug = type;
}
public string TypePlug { get; set; }
}
class Ring : ToolProduct
{
public Ring() { }
/// <summary>
/// Конструктор Резьбового Кольца
/// </summary>
/// <param name="name">Наименование кольца</param>
/// <param name="typeThread">Вид резьбы метрический,дюйм,трубный,специальный</param>
/// <param name="profile">Профиль полный,укороченый,гладкие резьбовые и т.д.</param>
public Ring(string name,string typeThread, string profile):base(name)
{
TypeThread = typeThread;
Profile = profile;
}
public string TypeThread { get; set; }
public string Profile { get; set; }
}
class Template : ToolProduct
{
public Template() { }
/// <summary>
/// Конструктор шаблонов
/// </summary>
/// <param name="name">ГОСТ наименование шаблона</param>
public Template(string name) : base(name) { }
}
DB_Connection - залита в App.config
<connectionStrings>
<add name="DB_Connection" connectionString="Data Source=DEIMOS-PC\DEIMOS;Initial Catalog=AutomationSystem;Integrated Security=True" providerName="System.Data.SqlClient" />
</connectionStrings>
А вот код этих коллекций ниже и их DataContext для Entitty в виде DbSet
ВОПРОС : как можно оптимизировать this shit
Может шаблонами типа Factory Method, Builder, Abstract Factory ???
Можно ли тут использовать Ковариантность/Контравариантность и как
Или есть иной способ объединения?
Тут все очень повторяется так и просится сократить что то
class CaliberCollection : DbContext
{
List<Caliber> CaliberList;
internal CaliberCollection(string DBConnection = "DB_Connection") { }
//Этот конструктор хочу использовать после того как я получу список объектов из базы
//Что бы потом со списком привычнее работать типа создать
//методы Find(params) Add() Remove() IsExist() Change() и т.д.
public CaliberCollection(List<Caliber> list) { CaliberList = list; }
public DbSet<Caliber> Collection { get; set; }
}
class ClampCollection : DbContext
{
List<Clamp> ClampList;
internal ClampCollection(string DBConnection = "DB_Connection") { }
public ClampCollection(List<Clamp> list) { ClampList = list; }
public DbSet<Clamp> Collection { get; set; }
}
class RingCollection : DbContext
{
List<Ring> RingList;
internal RingCollection(string DBConnection = "DB_Connection") { }
public RingCollection(List<Ring> list) { RingList = list; }
public DbSet<Ring> Collection { get; set; }
}
class PlugCollection : DbContext
{
List<Plug> PlugList;
internal PlugCollection(string DBConnection = "DB_Connection") { }
public PlugCollection(List<Plug> list) { PlugList = list; }
public DbSet<Plug> Collection { get; set; }
}
class TemplateCollection : DbContext
{
List<Template> TemplateList;
internal TemplateCollection(string DBConnection = "DB_Connection"){}
public TemplateCollection(List<Template> list) { TemplateList = list; }
public DbSet<Template> Collection { get; set; }
}
Для теста вот так я их вызываю
private void Btn_AddRow_Click(object sender, RoutedEventArgs e)
{
//CaliberCollection ClampCollection RingCollection PlugCollection TemplateCollection
Database.SetInitializer(new CreateDatabaseIfNotExists<CaliberCollection>());
using (var DB = new CaliberCollection())
{
var mycollection = DB.Collection.ToList();
Tb_SearchKey.Text = mycollection.Count.ToString();
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Не могу понять, в чем проблема, где-то накосячила с запросом, но не могу понять, где
Допустим строка 3,12КЯ хочу преобразовать его в норм число
Когда пользователь выбирает элемент из списка в Combobox, он может ввести и свое значение, выглядит это так:
У меня есть приложение с разными темами и мне нужно как-то получать к ним доступСамым подходящим для меня является файл ресурсов