Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DataEntity / System / Data / Objects / ObjectViewEntityCollectionData.cs / 1305376 / ObjectViewEntityCollectionData.cs
//----------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//
// @owner [....]
// @backupOwner [....]
//---------------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data.Objects.DataClasses;
using System.Data.Objects.Internal;
using System.Diagnostics;
using System.Data.Common;
namespace System.Data.Objects
{
///
/// Manages a binding list constructed from an EntityCollection.
///
///
/// Type of the elements in the binding list.
///
///
/// Type of element in the underlying EntityCollection.
///
///
/// The binding list is initialized from the EntityCollection,
/// and is synchronized with changes made to the EntityCollection membership.
/// This class always allows additions and removals from the binding list.
///
internal sealed class ObjectViewEntityCollectionData : IObjectViewData
where TItemElement : class
where TViewElement : TItemElement
{
private List _bindingList;
private EntityCollection _entityCollection;
private readonly bool _canEditItems;
///
/// True if item that was added to binding list but not underlying entity collection
/// is now being committed to the collection.
/// Otherwise false.
/// Used by CommitItemAt and OnCollectionChanged methods to coordinate addition
/// of new item to underlying entity collection.
///
private bool _itemCommitPending;
///
/// Construct a new instance of the ObjectViewEntityCollectionData class using the supplied entityCollection.
///
///
/// EntityCollection used to populate the binding list.
///
internal ObjectViewEntityCollectionData(EntityCollection entityCollection)
{
_entityCollection = entityCollection;
_canEditItems = true;
// Allow deferred loading to occur when initially populating the collection
_bindingList = new List(entityCollection.Count);
foreach (TViewElement entity in entityCollection)
{
_bindingList.Add(entity);
}
}
#region IObjectViewData Members
public IList List
{
get { return _bindingList; }
}
public bool AllowNew
{
get { return !_entityCollection.IsReadOnly; }
}
public bool AllowEdit
{
get { return _canEditItems; }
}
public bool AllowRemove
{
get { return !_entityCollection.IsReadOnly; }
}
public bool FiresEventOnAdd
{
get { return true; }
}
public bool FiresEventOnRemove
{
get { return true; }
}
public bool FiresEventOnClear
{
get { return true; }
}
public void EnsureCanAddNew()
{
// nop
}
public int Add(TViewElement item, bool isAddNew)
{
if (isAddNew)
{
// Item is added to bindingList, but pending addition to entity collection.
_bindingList.Add(item);
}
else
{
_entityCollection.Add(item);
// OnCollectionChanged will be fired, where the binding list will be updated.
}
return _bindingList.Count - 1;
}
public void CommitItemAt(int index)
{
TViewElement item = _bindingList[index];
try
{
_itemCommitPending = true;
_entityCollection.Add(item);
// OnCollectionChanged will be fired, where the binding list will be updated.
}
finally
{
_itemCommitPending = false;
}
}
public void Clear()
{
if (0 < _bindingList.Count)
{
List
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- Pen.cs
- InvalidOperationException.cs
- NetTcpSection.cs
- NegationPusher.cs
- UserNamePasswordValidator.cs
- EventBindingService.cs
- DefaultTextStoreTextComposition.cs
- DataBoundControlHelper.cs
- CacheAxisQuery.cs
- DetailsViewRowCollection.cs
- RequestSecurityTokenForGetBrowserToken.cs
- CapiNative.cs
- StorageTypeMapping.cs
- diagnosticsswitches.cs
- UrlMappingCollection.cs
- WorkflowRuntimeService.cs
- SqlConnectionManager.cs
- CustomAssemblyResolver.cs
- WindowShowOrOpenTracker.cs
- TabControlAutomationPeer.cs
- DocumentPageViewAutomationPeer.cs
- FixedSOMTableRow.cs
- EntityDataSourceViewSchema.cs
- ToolStripRenderer.cs
- SessionEndingEventArgs.cs
- ArrayWithOffset.cs
- GridPattern.cs
- Ports.cs
- CookieParameter.cs
- Interfaces.cs
- ToolStripControlHost.cs
- securitymgrsite.cs
- controlskin.cs
- UpdatePanel.cs
- ConfigsHelper.cs
- MSG.cs
- CodeDomConfigurationHandler.cs
- Matrix3D.cs
- BoolLiteral.cs
- PropertyGridCommands.cs
- ActivityDesignerAccessibleObject.cs
- LinqDataSourceHelper.cs
- CurrentChangingEventArgs.cs
- ContractTypeNameCollection.cs
- WbmpConverter.cs
- BoundsDrawingContextWalker.cs
- XmlHierarchyData.cs
- ExplicitDiscriminatorMap.cs
- DesignOnlyAttribute.cs
- Scene3D.cs
- DecimalAnimationBase.cs
- TextCollapsingProperties.cs
- KeyboardInputProviderAcquireFocusEventArgs.cs
- XamlStyleSerializer.cs
- RowCache.cs
- TypeDependencyAttribute.cs
- SqlCrossApplyToCrossJoin.cs
- CodeRegionDirective.cs
- RefExpr.cs
- LineInfo.cs
- OleTxTransactionInfo.cs
- SystemResources.cs
- OdbcParameterCollection.cs
- HostUtils.cs
- QilGenerator.cs
- WebPartEditorOkVerb.cs
- GPRECT.cs
- StaticExtension.cs
- ObjectSet.cs
- ProjectionPathBuilder.cs
- SqlNode.cs
- XhtmlBasicValidationSummaryAdapter.cs
- ResourceCollectionInfo.cs
- AttributeQuery.cs
- XslAstAnalyzer.cs
- XmlObjectSerializer.cs
- DataGridBoolColumn.cs
- DebugView.cs
- FolderLevelBuildProviderCollection.cs
- _NetworkingPerfCounters.cs
- HostedHttpContext.cs
- CatalogZone.cs
- WebPartConnectVerb.cs
- ExternalDataExchangeClient.cs
- Label.cs
- Single.cs
- NGCSerializationManager.cs
- PlanCompiler.cs
- SqlStream.cs
- WorkflowWebHostingModule.cs
- BStrWrapper.cs
- FixedSchema.cs
- ImmComposition.cs
- TextRangeEditLists.cs
- GB18030Encoding.cs
- MultiTrigger.cs
- DataConnectionHelper.cs
- Attachment.cs
- XmlSchemaAll.cs
- SerializationStore.cs