Angesichts dieser Tabelle:
CREATE TABLE [Comments]
(
[Id] [int] IDENTITY(1, 1) NOT NULL,
[Text] [nvarchar](600) NOT NULL
)
Mit dieser Modellklasse:
[Table(Name="Comments")]
public class Comment
{
[Column(AutoSync = AutoSync.OnInsert, DbType = "Int NOT NULL IDENTITY", IsPrimaryKey = true, IsDbGenerated = true)]
public int Id { get; set; }
[Column(DbType = "NVarChar(600) NOT NULL", CanBeNull = false)]
public string Text { get; set; }
public string ArbitraryText { get; set; }
}
Ist es möglich, dass ein DataContext die ArbitraryText
Eigenschaft bei Verwendung der ExecuteQuery
Methode:
var comments = db.ExecuteQuery<Comment>("select Id, [Text], 'hello' [ArbitraryText] from Comments");
Es scheint, dass der Algorithmus der Entitätszuordnung jede Eigenschaft ignoriert, die nicht mit ColumnAttribute
aber gibt es eine andere Möglichkeit, dies zu tun?
Ich würde es vorziehen, das Mapping nicht selbst machen zu müssen, aber das scheint meine einzige Option zu sein.
Bearbeiten: Was ärgerlich ist, ist, dass die DataContext.ExecuteQuery-Funktion eine POCO Objekt aus einer Abfrage:
public class PlainOldCSharpObject
{
public int Id { get; set; }
public string Text { get; set; }
public string ArbitraryText { get; set; }
}
...
// DataContext correctly fills these objects
var pocos = db.ExecuteQuery<PlainOldCSharpObject>("select Id, [Text]...
So meine aktuelle Lösung ist eine innere Klasse auf meine LINQ-gemappte Objekt, das die zusätzlichen Daten meine aggregierte Abfrage zurückgibt hält. Dies ist suboptimal, da einige Eigenschaften dupliziert werden (z. B. Id und Text).