Replace attributes from System.ComponentModel.DataAnnotations.Schema

Open
#21,084 0 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
5/5
Estimated time
Over a week
Newbie friendliness
25/100
Issue type
Refactor
Clarity
Mostly clear
Activity status
Stale
Tech stack
csharp
Domain
databases

Research direction

Review the listed System.ComponentModel.DataAnnotations.Schema types and the linked #21075 discussion first, then inspect the EF Core Abstractions package where replacement attributes would belong. Done means defining the EF-specific replacements and establishing how users move away from the existing Schema attributes, but the issue does not identify implementation files or tests.

Written by the indexing model from the issue text.

Description

area-model-building

The Schema namespace was introduced specifically for EF Code First mapping attributes when we moved these into .NET Framework. It exists because these attributes are very coupled to EF/databases/relational concepts.

However, we have now moved away from using attributes in the BCL for new mapping capabilities because we're no longer attempting to make the attributes general purpose--they are specifically for EF mapping.

This then creates a problem when we do want to add new functionality to things currently covered by the Schema attributes--see #21075. Instead, we could create new EF specific attributes in our Abstractions package and move people away from using the Schema attributes.

See https://docs.microsoft.com/en-us/dotnet/api/system.componentmodel.dataannotations.schema?view=netcore-3.1

The types are:

  • ColumnAttribute
  • ComplexTypeAttribute
  • DatabaseGeneratedAttribute
  • ForeignKeyAttribute
  • InversePropertyAttribute
  • NotMappedAttribute
  • TableAttribute
Dominant language
C#
Stars
14.8k
Forks
3.4k
Avg merge
2d 5h
Merged PRs (30d)
134

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from dotnet/efcore

All issues in dotnet/efcore

Similar issues

More C# issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.