2017-01-30 7 views
1

Nehmen wir an, ich die folgende Klasse haben:EF Kern FromSql benutzerdefinierte Eigenschaft Bindung

public class Person 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    [NotMapped] 
    public bool Code { get; set; } 
} 

Die Eigenschaft Code keine Spalte ist aber durch SQL-Abfrage berechnet. Ich möchte die Eigenschaft Code an meinen Person Typ mit der FromSql Methode binden. Etwas wie folgt aus:

var result = db.Person 
       .FromSql("select Id, Name, 'Roar' as Code from Persons") 
       .Select(x => new Person 
       { 
        Id = x.Id, 
        Name = x.Name, 
        Code = EF.Property<string>(x, "Code") 
       }).ToList(); 

Gibt es eine Möglichkeit benutzerdefinierte SQL-Abfrage Variable zu binden Eigenschaft zum Objekt?

+0

Ich denke nicht, dass dies mit EF Core möglich ist, die [Docs] (https://docs.microsoft.com/en-us/ef/core/querying/raw-sql) sagen * "SQL-Abfragen können werden nur verwendet, um Entitätstypen zurückzugeben, die Teil Ihres Modells sind "* und diese Spalte ist nicht Teil Ihres Modells. – DavidG

Antwort

0

Dank DavidG. Der schmutzige Workaround dafür war, das Attribut NotMapped zu entfernen. Um das Entfernen des Attributs NotMapped zu vermeiden, können Sie jedoch einen LINQ-Ausdruck verwenden, sodass code seinen Wert erhält.

Wenn Sie komplexe benutzerdefinierte SQL-Abfragen verwenden möchten, verwenden Sie ADO.NET am besten.

Verwandte Themen