I recently began using entity framework, and I noticed that generated entities are partial classes. What are the uses of that? I googled a bit and people mostly speak of validat
partial
is added to generated entities for customization.
In situations when you wish to add your own methods to classes produced by code generators, including EF, it is a good idea to put your implementation in a separate file, so that you wouldn't run the risk of losing your customizations each time the code is re-generated.
Without partial
developers wishing to customize the class would have to use work-around techniques, such as applying Generation Gap design pattern.
For the same reason partial
classes typically exist at all, code generation.
When code is generated; you don't want your additional methods/properties/whatever blown away, so the designers mark such classes partial
to allow users to put additional code in a different file.
In Code-First, the code-generation aspect of EF has largely become obsolete so any EF model classes you create do not need partial
.
Marking it as partial allows you to put attributes to that class.
It is handy for example when you need to mark DB generated class as Serializable
to be able to store it in Session object (when SQL server mode is used in balanced environments).