J'ai un modèle de domaine qui a des propriétés qui n'existent pas dans la base de données. Par exemple ...Entity Framework ne remplit que les champs de base de données dans le modèle de domaine
public class DomainModel: IKeyedEntity
{
//Id for the table
public int DomainModelID { get; set; }
//Foreign key value
public int FooID { get; set; }
//Text value
public string Value { get; set; }
//Generic reference to the id of the table
public int Key { get { return this.DomainModelID; } }
//No a column in the database
public Guid ArchiveIdentifier
{
get { return Foo.ArchiveIdentifier; }
set { Foo.ArchiveIdentifier = value }
}
//Navigation Property
public virtual Foo Foo { get; set; }
}
Comme vous pouvez voir les propriétés Key
et ArchiveIdentifier
ne sont pas des colonnes dans la table DomainModels. Lorsque j'exécute une requête, Entity Framework traite la propriété ArchiveIdentifier
comme s'il s'agissait d'une colonne de la base de données. Voici un exemple de SQL généré lors de l'extraction de tous les DomainModels.
SELECT
[Extent1].[DomainModelID] AS [DomainModelID],
[Extent1].[FooID] AS [FooID],
[Extent1].[Value] AS [Value],
[Extent1].[ArchiveIdentifier] AS [ArchiveIdentifier]
FROM [dbo].[DomainModels] AS [Extent1]
Entity Framework ne cherche pas à remplir la propriété Key
car elle ne dispose pas d'une méthode de jeu mais il traite ArchiveIdentifier
comme si elle était une colonne dans la table. Existe-t-il une annotation ou une méthode pour indiquer à Entity Framework que ArchiveIdentifier
n'est pas une colonne?