IT:AD:Code First:Entities:Properties
CheckList: Class Properties
- MUST: mark Scalar Properties as
virtual
to enable improved Change Tracking (by going from Snapshot CT to Proxy POCO Change Tracking, which is based onIPOCO
/IEntityWithChangeTracker
). - MUST: mark Collection Navigation Properties as
virtual
to enable lazy loading. - MUST: Navigation Collection properties must implement
ICollection<Entities>
- SHOULD: As we are working with proxies, can use
private set
for Id, etc:public string Id {get; private set;}
- CONSIDER: For properties that need to ignored:
- DataAnnotations:
[Ignore]
(see IT:AD:Code First:DataAnnotations). - FluentAPI: within
DataContext.OnModelCreating()
:modelBuilder.Entity<Department>().Ignore(t => t.Budget);
(see IT:AD:Code First:FluentAPI:Properties)
- CONSIDER: For derived calculated properties that need to be saved, use empty sets:
public FullName {get {return _first + " " + _last;} set {}}
* CONSIDER: If you have to turn of Id autogeneration:- DataAnnotations: ? (see IT:AD:Code First:DataAnnotations)
- FluentAPI: within
DataContext.OnModelCreating()
:modelBuilder.Entity<Dept>().Property(t => t.ID).HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
(see IT:AD:Code First:FluentAPI:Properties)