2016-07-19 5 views
1

Dies ist Gegenstand BildEntinty Rahmenspar Zusammenhang mit Null-Felder mvc5

public int Id { get; }   //primary key 
public string Path { get; set; } //not null 
public string Name { get; set; } //not null 
public string Url { get; set; } //allows null 
public string SecureUrl { get; set; } //allows null 

EFDbImageRepository

public void UploadToCloud(Image image) 
{ 
    System.Diagnostics.Debug.WriteLine(image.Id); 
    if(image.Id == 0) 
    { 
     context.Images.Add(image); 
    }else 
    { 
     Image dbEntry = context.Images.Find(image.Id); 
    } 
    context.SaveChanges(); 
} 

In-Controller in der upload Aktion

... 
Image image = new Image(); 
image.init(path, "defaultName1", "type"); 
imageRepository.UploadToCloud(image); 
... 

Im Moment UploadToCloud I de Ausnahme haben : 'System.Data.Entity.ModelConfiguration.ModelValidationException' in EntityFramework.dll

Es scheint, dass es ein Problem mit Daten gibt, die ich versuche zu speichern, aber ich verstehe nicht, was falsch ist. In diesem Moment initialisiere ich nur 2 Felder Pfad und Name. Id sollte automatisch gesetzt werden, Url und SecureUrl lassen null zu, also sollten alle gut sein.

Wie Objekt in Datenbank speichern?

+0

Fügen Sie das Attribut [Key] über public int Id {get; } und versuchen Sie –

+0

Sie müssen sich die ValidationExceptions-Auflistung ansehen, um festzustellen, was falsch ist. Siehe http://stackoverflow.com/questions/27777004/modelvalidationexception-was-unhandled-user-code, wie man das macht, – Dabblernl

+1

Außerdem funktioniert Ihr Update-Code nicht. Die Zuweisung einer Entität zu "dbEntry" führt nicht zur Aktualisierung. Bitte lesen Sie die Tutorials erneut, um Entitäten zu aktualisieren. – Dabblernl

Antwort

1

Sie haben das Feld Id nur gelesen. Entity Frameworke ignoriert schreibgeschützte Eigenschaften, sodass Sie jetzt eine Entität ohne einen Primärschlüssel erstellt haben. Sie müssen mindestens hinzufügen , aber warum kein gewöhnliches (öffentliches) {get;set;}?.