1 //------------------------------------------------------------------------------
2 // <copyright file="EntityConnectionStringBuilderItem.cs" company="Microsoft">
3 // Copyright (c) Microsoft Corporation. All rights reserved.
7 // @backupOwner Microsoft
8 //------------------------------------------------------------------------------
10 using System.Data.EntityClient;
11 using System.Diagnostics;
13 namespace System.Web.UI.Design.WebControls
15 internal class EntityConnectionStringBuilderItem : IComparable<EntityConnectionStringBuilderItem>
17 // Only one of the following should be set. This is enforced through the constructors and the fact that these fields are readonly.
18 private readonly EntityConnectionStringBuilder _connectionStringBuilder;
19 private readonly string _unknownConnectionString; // used when the string cannot be loaded into a connection string builder or is missing some required keywords
21 internal EntityConnectionStringBuilderItem(EntityConnectionStringBuilder connectionStringBuilder)
23 // empty connection string builder is allowed, but not null
24 Debug.Assert(connectionStringBuilder != null, "null connectionStringBuilder");
26 _connectionStringBuilder = connectionStringBuilder;
29 internal EntityConnectionStringBuilderItem(string unknownConnectionString)
31 // empty is not allowed -- use the constructor that takes a builder if the string is empty
32 Debug.Assert(!String.IsNullOrEmpty(unknownConnectionString), "null or empty unknownConnectionString");
33 _unknownConnectionString = unknownConnectionString;
36 internal string ConnectionString
40 if (_connectionStringBuilder != null)
42 return _connectionStringBuilder.ConnectionString;
46 return _unknownConnectionString;
51 internal EntityConnectionStringBuilder EntityConnectionStringBuilder
55 return _connectionStringBuilder;
63 return String.IsNullOrEmpty(this.ConnectionString);
67 internal bool IsNamedConnection
71 if (_connectionStringBuilder != null)
73 return !String.IsNullOrEmpty(_connectionStringBuilder.Name);
77 // if the connection string is not recognized by a EntityConnectionStringBuilder, it can't be a valid named connection
83 public override string ToString()
85 // Display just the name for named connections, but the full connection string otherwise
86 if (_connectionStringBuilder != null)
88 if (!String.IsNullOrEmpty(_connectionStringBuilder.Name))
90 return _connectionStringBuilder.Name;
94 return _connectionStringBuilder.ConnectionString;
99 return _unknownConnectionString;
103 int IComparable<EntityConnectionStringBuilderItem>.CompareTo(EntityConnectionStringBuilderItem other)
105 return (String.Compare(this.ToString(), other.ToString(), StringComparison.OrdinalIgnoreCase));