Ich habe dieses Objekt Karte für Entity Framework:Wie kann ich EF bei dem Versuch stoppen, eine berechnete Spalte für SQL Server zu aktualisieren?
public WordDefinitionMap(string schema)
{
ToTable(schema + ".WordDefinition");
HasKey(x => x.WordDefinitionId);
Property(x => x.WordDefinitionId).HasColumnName(@"WordDefinitionId").IsRequired().HasColumnType("int").HasDatabaseGeneratedOption(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption.Identity);
Property(x => x.WordFormId).HasColumnName(@"WordFormId").IsRequired().IsUnicode(false).HasColumnType("varchar").HasMaxLength(20);
Property(x => x.Ascii).HasColumnName(@"Ascii").IsOptional().HasColumnType("int").HasDatabaseGeneratedOption(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption.Computed);
// Foreign keys
HasRequired(a => a.WordForm).WithMany(b => b.WordDefinitions).HasForeignKey(c => c.WordFormId); // FK_WordDefinitionWordForm
}
public class WordDefinition
{
public int WordDefinitionId { get; set; } // WordDefinitionId (Primary key)
public string WordFormId { get; set; } // WordFormId (length: 20)
public int? Ascii { get; set; } // Ascii
// Foreign keys
public virtual WordForm WordForm { get; set; } // FK_WordDefinitionWordForm
}
Wenn verwende ich Entity Framework zu versuchen, dieses Objekt zu aktualisieren ich eine Ausnahme bin immer sagen:
The column "Ascii" cannot be modified because it is either a computed column or is the result of a UNION operator.
Ich dachte, ich war schon EF anweist diese Eigenschaft zu ignorieren, aber es scheint, es versucht immer noch, es zu aktualisieren, obwohl es null ist. Gibt es eine Möglichkeit, wie ich das Mapping so ändern kann EF nicht diese Eigenschaft gesetzt?
Dann sollte ich nur die folgende Konfiguration entfernen 'HasDatabaseGeneratedOption (System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption.Computed);' auf Ascii-Konfiguration – CodeNotFound
Ist das nicht die Anweisung, die sagt (oder sollte sagen) EF nicht zu berühren diese Spalte? Du schlägst vor, ich entferne das und womit würde ich es ersetzen? Danke –
Weil Accii-Eigenschaft kein Primärschlüssel ist. EF wird diese Immobilie als nicht generierte Immobilie betrachten. – CodeNotFound