SqlEngine.cs 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. using System;
  2. using System.Data.Common;
  3. namespace LJLib.DAL.SQL
  4. {
  5. internal interface ISqlEngine
  6. {
  7. DateTime GetServerTime(DbCommand cmd);
  8. void AddWithValue(object cmd, string name, object value);
  9. }
  10. internal abstract class SqlEngine<T> : ISqlEngine where T : DbCommand
  11. {
  12. public DateTime GetServerTime(DbCommand cmd)
  13. {
  14. var cmdinternal = cmd as T;
  15. if (cmdinternal == null)
  16. {
  17. throw new Exception(string.Format("数据库引擎{0}与{1}不兼容", this.GetType().FullName, typeof(T).FullName));
  18. }
  19. return GetServerTimeInternal(cmdinternal);
  20. }
  21. protected abstract DateTime GetServerTimeInternal(T cmd);
  22. public void AddWithValue(object cmd, string name, object value)
  23. {
  24. var cmdinternal = cmd as T;
  25. if (cmdinternal == null)
  26. {
  27. throw new Exception(string.Format("数据库引擎{0}与{1}不兼容", this.GetType().FullName, typeof(T).FullName));
  28. }
  29. AddWithValueInternal(cmdinternal, name, value);
  30. }
  31. protected abstract void AddWithValueInternal(T cmd, string name, object value);
  32. }
  33. }