Add sugar to allow opt-in mapping for properties/relationships/etc.
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 25/100
Research direction
Start with the issue’s example of a generated Car class extended with a non-persisted property, and compare the requested opt-in mapping approach with the [NotMapped] workaround it describes. The issue names no files, tests, or entry points, and does not specify the desired API; the first step is to clarify the design and what behavior would count as complete.
Written by the indexing model from the issue text.
Description
If I have a class that is to be used with EF as a complete and correct table mapping. This class is generated from some description elsewhere.
public partial class Car
{
public int Id {get; set;}
public string Name {get; set;}
public string MfgYear {get; set;}
etc...
}
This class is intended to be extended with some additional properties that do not require persistence and a few methods.
public partial class Car
{
public int MaxSpeed {get; private set;}
public void RecalculateMaxSpeed(int accelerationTime, int accelerationRate)
{
//this math is for example purposes only and is not intended to be complete or correct
MaxSpeed = accelerationTime * accelerationRate;
}
}
When I try to save an instance of Car, EF errors about MaxSpeed not being mapped. The advice most commonly given is to either add [NotMapped] to MaxSpeed, or to create a second Car class and add the MaxSpeed property to that and remap the EF object to the new Car on Gets and back to the EF object on Saves. The remapping is not preferable and is not an option in the scope of this post.
Adding [NotMapped] to every field not part of the entity is also ripe with chances for bugs to happen.
Is there any way to "Opt In" an object and specific properties so that EF knows which are eligible for its scope?
- Dominant language
- C#
- Stars
- 14.8k
- Forks
- 3.4k
- Avg merge
- 2d 5h
- Merged PRs (30d)
- 134
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from dotnet/efcore
-
Difficulty 4/5 3-5 days Newbie friendliness 55/100
-
customer-reported
Difficulty 5/5 Over a week Newbie friendliness 38/100
-
area-cosmos area-vector-search
Difficulty 5/5 Over a week Newbie friendliness 25/100
-
area-cosmos
Difficulty 5/5 Over a week Newbie friendliness 25/100
-
area-tools needs-design
Difficulty 4/5 3-5 days Newbie friendliness 25/100
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
-
:watch: Not Triaged 11.0 fundamentals/subsvc
Difficulty 2/5 1-3 hours Newbie friendliness 92/100
dotnet/AspNetCore.Docs#37699 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
SubtitleEdit/subtitleedit#15108 · 1 comment ·
-
area/docs-content Bug pulumi/docs
Difficulty 1/5 1-3 hours Newbie friendliness 94/100
-
agentic-workflows untriaged
Difficulty 2/5 1-3 hours Newbie friendliness 76/100