Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DLinq / Dlinq / SqlClient / SqlBuilder.cs / 1305376 / SqlBuilder.cs
using System; using System.Collections.Generic; using System.Diagnostics; using System.Data.SqlClient; using System.IO; using System.Linq; using System.Linq.Expressions; using System.Reflection; using System.Text; namespace System.Data.Linq.SqlClient { using System.Data.Linq.Mapping; using System.Data.Linq.Provider; using System.Diagnostics.CodeAnalysis; ////// Class for building up SQL DDL commands. /// internal static class SqlBuilder { internal static string GetCreateDatabaseCommand(string catalog, string dataFilename, string logFilename) { StringBuilder sb = new StringBuilder(); sb.AppendFormat("CREATE DATABASE {0}", SqlIdentifier.QuoteIdentifier(catalog)); if (dataFilename != null) { sb.AppendFormat(" ON PRIMARY (NAME='{0}', FILENAME='{1}')", Path.GetFileName(dataFilename), dataFilename); sb.AppendFormat(" LOG ON (NAME='{0}', FILENAME='{1}')", Path.GetFileName(logFilename), logFilename); } return sb.ToString(); } internal static string GetDropDatabaseCommand(string catalog) { StringBuilder sb = new StringBuilder(); sb.AppendFormat("DROP DATABASE {0}", SqlIdentifier.QuoteIdentifier(catalog)); return sb.ToString(); } internal static string GetCreateSchemaForTableCommand(MetaTable table) { StringBuilder sb = new StringBuilder(); Listparts = new List (SqlIdentifier.GetCompoundIdentifierParts(table.TableName)); // table names look like this in Yukon (according to MSDN): // [ database_name . [ schema_name ] . | schema_name . ] table_name // ... which means that either way, the schema name is the second to last part. if ((parts.Count) < 2) { return null; } string schema = parts[parts.Count - 2]; if (String.Compare(schema, "DBO", StringComparison.OrdinalIgnoreCase) != 0 && String.Compare(schema, "[DBO]", StringComparison.OrdinalIgnoreCase) != 0) { sb.AppendFormat("CREATE SCHEMA {0}", SqlIdentifier.QuoteIdentifier(schema)); } return sb.ToString(); } internal static string GetCreateTableCommand(MetaTable table) { StringBuilder sb = new StringBuilder(); StringBuilder decl = new StringBuilder(); BuildFieldDeclarations(table, decl); sb.AppendFormat("CREATE TABLE {0}", SqlIdentifier.QuoteCompoundIdentifier(table.TableName)); sb.Append("("); sb.Append(decl.ToString()); decl = new StringBuilder(); BuildPrimaryKey(table, decl); if (decl.Length > 0) { string name = String.Format(Globalization.CultureInfo.InvariantCulture, "PK_{0}", table.TableName); sb.Append(", "); sb.AppendLine(); sb.AppendFormat(" CONSTRAINT {0} PRIMARY KEY ({1})", SqlIdentifier.QuoteIdentifier(name), decl.ToString()); } sb.AppendLine(); sb.Append(" )"); return sb.ToString(); } internal static void BuildFieldDeclarations(MetaTable table, StringBuilder sb) { int n = 0; Dictionary
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- TreeNodeStyleCollection.cs
- CornerRadius.cs
- DataControlFieldHeaderCell.cs
- SqlDependencyListener.cs
- XmlSchemaSubstitutionGroup.cs
- X500Name.cs
- SqlDataReader.cs
- PropertyToken.cs
- DiscoveryDocumentLinksPattern.cs
- DBSchemaTable.cs
- TabletCollection.cs
- HttpCapabilitiesSectionHandler.cs
- HMACSHA1.cs
- HitTestResult.cs
- Point3DValueSerializer.cs
- ActivitySurrogate.cs
- ProjectionPath.cs
- TypeContext.cs
- HtmlForm.cs
- AsyncOperationManager.cs
- RSAPKCS1SignatureDeformatter.cs
- PaintValueEventArgs.cs
- NonClientArea.cs
- KnownIds.cs
- SqlCharStream.cs
- WebResourceUtil.cs
- RequestNavigateEventArgs.cs
- DataIdProcessor.cs
- StreamResourceInfo.cs
- BindingNavigatorDesigner.cs
- StringBuilder.cs
- Color.cs
- CompositeDuplexBindingElementImporter.cs
- XmlComplianceUtil.cs
- StyleHelper.cs
- ClaimSet.cs
- BuildProviderUtils.cs
- ReflectionHelper.cs
- InputMethod.cs
- MulticastIPAddressInformationCollection.cs
- Point3DCollectionConverter.cs
- AccessibleObject.cs
- FormatterServices.cs
- HwndMouseInputProvider.cs
- MergeFilterQuery.cs
- RequiredFieldValidator.cs
- DataGridColumnHeaderAutomationPeer.cs
- SymbolEqualComparer.cs
- AxHost.cs
- ActiveXSerializer.cs
- Regex.cs
- WebBrowserHelper.cs
- Compiler.cs
- RequestQueryProcessor.cs
- SmtpNtlmAuthenticationModule.cs
- namescope.cs
- MessageRpc.cs
- TreeNodeBindingCollection.cs
- DPTypeDescriptorContext.cs
- SqlUDTStorage.cs
- HyperlinkAutomationPeer.cs
- DataGridViewCellValidatingEventArgs.cs
- XmlSerializableReader.cs
- PipelineModuleStepContainer.cs
- SecureEnvironment.cs
- DataServiceConfiguration.cs
- HtmlElementEventArgs.cs
- NotImplementedException.cs
- WmlCommandAdapter.cs
- ApplicationServicesHostFactory.cs
- ControlBindingsCollection.cs
- TypeBuilderInstantiation.cs
- EnumBuilder.cs
- DefaultPrintController.cs
- QuaternionConverter.cs
- Int64Storage.cs
- LogLogRecordEnumerator.cs
- HttpModuleCollection.cs
- DateTimeValueSerializer.cs
- X509UI.cs
- RecordBuilder.cs
- ProfileServiceManager.cs
- Assert.cs
- StylusPointCollection.cs
- AttributeData.cs
- Permission.cs
- WindowsFormsHelpers.cs
- PropertyGroupDescription.cs
- SqlReorderer.cs
- InternalEnumValidator.cs
- WebPartConnectionsConnectVerb.cs
- ActiveXHelper.cs
- ViewStateException.cs
- DataProtection.cs
- TextTreeTextElementNode.cs
- XmlAttributeOverrides.cs
- ControlBindingsConverter.cs
- DatatypeImplementation.cs
- UnsupportedPolicyOptionsException.cs
- FieldAccessException.cs