This project is read-only.

EF 6.1.0 API Review

The purpose of API Review meetings is to go over new API surface one class/member at a time to ensure we have a consistent and high quality API. We look at how classes are structured, which members are public as well as the names of classes, members and parameters.

Comparing 6.0.2 RTM to the 6.1.0 nightly build from Jan-15-2014 we decided on the following changes:


Move this type to the same namespace as the annotation/attribute infrastructure


Remove the ClusteredConfiguration and UniqueConfiguration methods and introduce IsClusteredConfigured and IsUniqueConfigured to identify if the corresponding properties have been set (these will only have a getter).

IsCompatibleWith & MergeWith can be made internal and moved to be helper methods.


SetAnnotationCodeGenerator should be removed from this class and just be configurable on the Migrations Code Generator. We want it to be settable on the default instance rather than having to derive from the class and override things.


AddProperty/RemoveProperty should be renamed to AddPropertyMapping/RemovePropertyMapping – this applies to various other APIs in the System.Data.Entity.Core.Mapping namespace too.


Rename to MappingBase.


Rename Properties to MappingProperties


Create a System.Data.Entity.Infrastructure.Annotations namespace and move all annotation types into it (including CompatibilityResult that used to be in System.ComponentModel.DataAnnotations.Schema).


Rename SerializeValue/DeserializeValue to Serialize/Deserialize.


Rename ‘indexes’ parameter to ‘indexAttributes’ in the following APIs:

  • public IndexAnnotation(IEnumerable<IndexAttribute> indexes);
  • public IndexAnnotation(IndexAttribute index);
  • public virtual IEnumerable<IndexAttribute> Indexes { get; }


Rename ‘dbConnection’ parameters to ‘connection’


Rename to AnnotationValues.


AnnotationGenerators should be public (per decision to remove DbConfiguration.SetAnnotationCodeGenerator).

RegisterAnnotationGenerators can be removed now that DbConfiguration config point is being removed.


Remove ‘Annotations’ and make it a more generic AlterTableOperation (to support anything we add in the future).


Rename HasAnnotation to HasTableAnnotation (plus other relevant places in the code base).


Rename HasAnnotation to HasColumnAnnotation (plus other relevant places in the code base).

Last edited Jan 16, 2014 at 11:47 PM by RoMiller, version 4