|
|
|
using System;
|
|
|
|
using System.Data.Entity;
|
|
|
|
using System.Data.Entity.Core;
|
|
|
|
using System.Data.Entity.Core.EntityClient;
|
|
|
|
using System.Data.SqlClient;
|
|
|
|
using System.Linq;
|
|
|
|
using System.Text;
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
using CK.SCP.Models.AppBoxEntity;
|
|
|
|
using CK.SCP.Models.Enums;
|
|
|
|
using CK.SCP.Models.UniApiEntity;
|
|
|
|
using CK.SCP.Utils;
|
|
|
|
using ChangKeTec.Wms.Models.Wms;
|
|
|
|
using System.ComponentModel;
|
|
|
|
|
|
|
|
namespace CK.SCP.Models
|
|
|
|
{
|
|
|
|
public class LogModel : INotifyPropertyChanged
|
|
|
|
{
|
|
|
|
public string LogTime { get; set; }
|
|
|
|
public string LogMessage { get; set; }
|
|
|
|
public string TaskState { get; set; }
|
|
|
|
public string TableName { get; set; }
|
|
|
|
public string TaskId { get; set; }
|
|
|
|
public event PropertyChangedEventHandler PropertyChanged;
|
|
|
|
public void NotityPropertyChanged(string propertyName)
|
|
|
|
{
|
|
|
|
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public static class EntitiesFactory
|
|
|
|
{
|
|
|
|
static EntitiesFactory()
|
|
|
|
{
|
|
|
|
Database.SetInitializer<ScpEntities>(null);
|
|
|
|
Database.SetInitializer<WmsEntities>(null);
|
|
|
|
Database.SetInitializer<UniApiEntities>(null);
|
|
|
|
Database.SetInitializer<DataCenterContext>(null);
|
|
|
|
Database.SetInitializer<ExchangeCenterContext>(null);
|
|
|
|
}
|
|
|
|
|
|
|
|
public static ScpEntities CreateScpInstance()
|
|
|
|
{
|
|
|
|
try
|
|
|
|
{
|
|
|
|
// var strConn = setting == null ? GetEfConnectionString("Wms") : GetEfConnectionString(setting);
|
|
|
|
|
|
|
|
var strConn = GetEfConnectionString(GlobalConfig.ScpDatabase);
|
|
|
|
var db = new ScpEntities(strConn);
|
|
|
|
|
|
|
|
return db;
|
|
|
|
}
|
|
|
|
catch (SqlException ex)
|
|
|
|
{
|
|
|
|
throw new Exception($"ϵͳ�����ӵ����ݿ�:{GlobalConfig.ScpDatabase}�����������õķ�����,���ݿ�,�û�������������Ϣ�Ƿ���ȷ��" + Environment.NewLine + ex);
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
public static UniApiEntities CreateUniApiInstance()
|
|
|
|
{
|
|
|
|
try
|
|
|
|
{
|
|
|
|
// var strConn = setting == null ? GetEfConnectionString("UniApi") : GetEfConnectionString(setting);
|
|
|
|
var strConn = GetEfConnectionString(GlobalConfig.UniApiDatabase);
|
|
|
|
var db = new UniApiEntities(strConn);
|
|
|
|
return db;
|
|
|
|
}
|
|
|
|
catch (SqlException ex)
|
|
|
|
{
|
|
|
|
throw new Exception($"ϵͳ�����ӵ����ݿ�:{GlobalConfig.UniApiDatabase}�����������õķ�����,���ݿ�,�û�������������Ϣ�Ƿ���ȷ��" + Environment.NewLine + ex);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public static AppBoxContext CreateAppBoxInstance()
|
|
|
|
{
|
|
|
|
try
|
|
|
|
{
|
|
|
|
// var strConn = setting == null ? GetEfConnectionString("UniApi") : GetEfConnectionString(setting);
|
|
|
|
var strConn = GetEfConnectionString(GlobalConfig.AppBoxDatabase);
|
|
|
|
var db = new AppBoxContext(strConn);
|
|
|
|
return db;
|
|
|
|
}
|
|
|
|
catch (SqlException ex)
|
|
|
|
{
|
|
|
|
throw new Exception($"ϵͳ�����ӵ����ݿ�:{GlobalConfig.AppBoxDatabase}�����������õķ�����,���ݿ�,�û�������������Ϣ�Ƿ���ȷ��" + Environment.NewLine + ex);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public static WmsEntities CreateWmsInstance()
|
|
|
|
{
|
|
|
|
try
|
|
|
|
{
|
|
|
|
// var strConn = setting == null ? GetEfConnectionString("Wms") : GetEfConnectionString(setting);
|
|
|
|
|
|
|
|
var strConn = GetEfConnectionString(GlobalConfig.WmsDatabase);
|
|
|
|
var db = new WmsEntities(strConn);
|
|
|
|
return db;
|
|
|
|
}
|
|
|
|
catch (SqlException ex)
|
|
|
|
{
|
|
|
|
throw new Exception($"ϵͳ�����ӵ����ݿ�:{GlobalConfig.WmsDatabase}�����������õķ�����,���ݿ�,�û�������������Ϣ�Ƿ���ȷ��" + Environment.NewLine + ex);
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
public static DataCenterContext CreateDataCenterInstance()
|
|
|
|
{
|
|
|
|
var dbSetting = GlobalConfig.DataCenterDB;
|
|
|
|
try
|
|
|
|
{
|
|
|
|
DataCenterContext db;
|
|
|
|
var strConn = GetEfConnectionString(dbSetting);
|
|
|
|
db = new DataCenterContext(strConn);
|
|
|
|
|
|
|
|
return db;
|
|
|
|
}
|
|
|
|
catch (SqlException ex)
|
|
|
|
{
|
|
|
|
throw new Exception($"ϵͳ�����ӵ����ݿ�:{dbSetting}�����������õķ�����,���ݿ�,�û�������������Ϣ�Ƿ���ȷ��{Environment.NewLine}{ex}");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public static ExchangeCenterContext CreateExchangeCenterInstance()
|
|
|
|
{
|
|
|
|
var dbSetting = GlobalConfig.ExchangeCenterDB;
|
|
|
|
try
|
|
|
|
{
|
|
|
|
ExchangeCenterContext db;
|
|
|
|
var strConn = GetEfConnectionString(dbSetting);
|
|
|
|
db = new ExchangeCenterContext(strConn);
|
|
|
|
return db;
|
|
|
|
}
|
|
|
|
catch (SqlException ex)
|
|
|
|
{
|
|
|
|
throw new Exception($"ϵͳ�����ӵ����ݿ�:{dbSetting}�����������õķ�����,���ݿ�,�û�������������Ϣ�Ƿ���ȷ��{Environment.NewLine}{ex}");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public static string GetEfConnectionString(DbSetting dbSetting)
|
|
|
|
{
|
|
|
|
var sbConn = new StringBuilder();
|
|
|
|
|
|
|
|
if (string.IsNullOrEmpty(dbSetting.����))
|
|
|
|
{
|
|
|
|
throw new Exception("�����ļ�������������");
|
|
|
|
}
|
|
|
|
switch (dbSetting.���ݿ�����)
|
|
|
|
{
|
|
|
|
case "SQLServer":
|
|
|
|
sbConn.Append($"Data source ={dbSetting.��������ַ}");
|
|
|
|
sbConn.Append(dbSetting.�˿� == "0" ? ";" : $",{dbSetting.�˿�};");
|
|
|
|
sbConn.Append($"Initial catalog = {dbSetting.���ݿ�����};");
|
|
|
|
sbConn.Append($"User id = {dbSetting.�û���};");
|
|
|
|
sbConn.Append($"Password = {EncryptHelper.Decrypt(dbSetting.����)};");
|
|
|
|
sbConn.Append("MultipleActiveResultSets = True;");
|
|
|
|
sbConn.Append("persist security info = True;");
|
|
|
|
sbConn.Append("App = EntityFramework;");
|
|
|
|
break;
|
|
|
|
case "MySql":
|
|
|
|
sbConn.Append($"server ={dbSetting.��������ַ};");
|
|
|
|
sbConn.Append($"port ={dbSetting.�˿�};");
|
|
|
|
sbConn.Append($"database = {dbSetting.���ݿ�����};");
|
|
|
|
sbConn.Append($"user id = {dbSetting.�û���};");
|
|
|
|
sbConn.Append($"password = {EncryptHelper.Decrypt(dbSetting.����)};");
|
|
|
|
sbConn.Append("persistsecurityinfo =True;");
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
// LogHelper.Write(sbConn.ToString());
|
|
|
|
return sbConn.ToString();
|
|
|
|
}
|
|
|
|
|
|
|
|
public static void SaveDb(DbContext db)
|
|
|
|
{
|
|
|
|
try
|
|
|
|
{
|
|
|
|
db.BulkSaveChanges();
|
|
|
|
}
|
|
|
|
catch (System.Data.Entity.Validation.DbEntityValidationException dbEx)//����ʵ����֤�쳣
|
|
|
|
{
|
|
|
|
var sb = new StringBuilder();
|
|
|
|
|
|
|
|
foreach (var error in dbEx.EntityValidationErrors.ToList())
|
|
|
|
{
|
|
|
|
|
|
|
|
error.ValidationErrors.ToList().ForEach(i =>
|
|
|
|
{
|
|
|
|
sb.AppendFormat("����{0}���ֶΣ�{1}����Ϣ��{2}\r\n", error.Entry.Entity.GetType().Name, i.PropertyName, i.ErrorMessage);
|
|
|
|
});
|
|
|
|
}
|
|
|
|
throw new ScpException(ResultCode.DbEntityValidationException, sb.ToString(), "�ֶ���֤ʧ��" + sb.ToString());
|
|
|
|
}
|
|
|
|
catch (OptimisticConcurrencyException ex)//������ͻ�쳣
|
|
|
|
{
|
|
|
|
|
|
|
|
throw new ScpException(ResultCode.Exception, "9999", ex.ToString());
|
|
|
|
}
|
|
|
|
catch (ScpException ex)
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
if (ex.InnerException != null && ex.InnerException.GetType() == typeof(UpdateException))
|
|
|
|
{
|
|
|
|
var inner = (UpdateException)ex.InnerException;
|
|
|
|
|
|
|
|
|
|
|
|
throw new ScpException(ResultCode.Exception, "0000", ex.ToString());
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
if (ex.InnerException != null) throw ex.InnerException;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|