DatabaseReferenceNode.cs 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. using System;
  2. using Prebuild.Core.Attributes;
  3. using Prebuild.Core.Utilities;
  4. namespace Prebuild.Core.Nodes
  5. {
  6. [DataNode("DatabaseReference")]
  7. public class DatabaseReferenceNode : DataNode
  8. {
  9. string name;
  10. Guid providerId;
  11. string connectionString;
  12. public string Name
  13. {
  14. get { return name; }
  15. }
  16. public Guid ProviderId
  17. {
  18. get { return providerId; }
  19. }
  20. public string ConnectionString
  21. {
  22. get { return connectionString; }
  23. }
  24. public override void Parse(System.Xml.XmlNode node)
  25. {
  26. name = Helper.AttributeValue(node, "name", name);
  27. string providerName = Helper.AttributeValue(node, "providerName", string.Empty);
  28. if (providerName != null)
  29. {
  30. switch (providerName)
  31. {
  32. // digitaljeebus: pulled from HKLM\SOFTWARE\Microsoft\VisualStudio\9.0\DataProviders\*
  33. // Not sure if these will help other operating systems, or if there's a better way.
  34. case "Microsoft.SqlServerCe.Client.3.5":
  35. providerId = new Guid("7C602B5B-ACCB-4acd-9DC0-CA66388C1533"); break;
  36. case "System.Data.OleDb":
  37. providerId = new Guid("7F041D59-D76A-44ed-9AA2-FBF6B0548B80"); break;
  38. case "System.Data.OracleClient":
  39. providerId = new Guid("8F5C5018-AE09-42cf-B2CC-2CCCC7CFC2BB"); break;
  40. case "System.Data.SqlClient":
  41. providerId = new Guid("91510608-8809-4020-8897-FBA057E22D54"); break;
  42. case "System.Data.Odbc":
  43. providerId = new Guid("C3D4F4CE-2C48-4381-B4D6-34FA50C51C86"); break;
  44. default:
  45. throw new ArgumentOutOfRangeException("providerName", providerName, "Could not provider name to an id.");
  46. }
  47. }
  48. else
  49. providerId = new Guid(Helper.AttributeValue(node, "providerId", Guid.Empty.ToString("B")));
  50. connectionString = Helper.AttributeValue(node, "connectionString", connectionString);
  51. base.Parse(node);
  52. }
  53. }
  54. }