Ich habe eine bestehende Datenbank ( die ich in keiner Weise ändern kann ), die ich gerne mit EF kodieren würde. Es gibt keine Primärschlüssel, Fremdschlüssel oder tatsächliche Beziehungen zwischen Tabellen - alles scheint von Anwendungen gehandhabt zu werden, die die DB verwenden. Für die meisten der Tabellen/Entitäten war dies trivial. Allerdings habe ich eine Klasse, wie die untenstehende (vereinfacht), mit der ich zu kämpfen habe.
[Table("tableName")]
public class MyClass
{
[Key]
[Column("id")]
public int? Id { get; set; }
[Column("name")]
public string CompanyName { get; set; }
[Column("address")]
public string Address { get; set; }
}
Dinge wie _context.MyClasses.Where(x => x.Address == "something")
funktionieren gut. Es scheint jedoch, dass, wenn die id-Spalte NULL in der DB ist, ich ein Null-Objekt zurückbekomme - auch wenn CompanyName und Address Werte haben. Und ich brauche diese Werte, unabhängig davon, ob id (oder was auch immer) null ist. Gibt es eine Möglichkeit, EF zu zwingen, die Objekte zu erzeugen und leere Spalten zu ignorieren?
Wenn ich das Attribut [Key] entferne oder verschiebe, erhalte ich eine Ausnahme wie "Muss eine Schlüsselspalte haben" (und die Id-Spalte wird auch verwendet, um eine Sammlung anderer Klassen auf diese Klasse abzubilden, wenn es welche gibt, die passen).
UPDATE Betrachten Sie die Id-Spalte nicht als eigentlichen Bezeichner. Sie ist im Grunde nur eine Ganzzahl mit einem dummen Namen.