Ich versuche eine Eigenschaft zu einer der generierten Datenklassen hinzuzufügen, die das Entity Framework für mich erstellt hat. Ich habe die gleiche Sache an einer anderen generierten Klasse ohne ein Problem gemacht und aus irgendeinem Grund wird es bei dieser nicht funktionieren.Entity Framework: Anpassen der generierten Datenobjektausnahme
Der einzige Unterschied zwischen den beiden generierten Objekten ist, dass es sich nur um eine direkte Tabellenzuordnung handelt (die eine, die funktioniert) und die andere von einem anderen Objekt (das nicht funktioniert). Mit anderen Worten: eine Tabelle stellt zwei Entitäten und auf der Grundlage einiger Kriterien i es abstrahiert haben und erstellt zwei Vererbungs Einheiten ...
<EntityType Name="Product" Abstract="true">
<Key>
<PropertyRef Name="Id" />
</Key>
<Property Name="Id" Type="String" Nullable="false" />
</EntityType>
<EntityType Name="Key" BaseType="MyEntities.Product">
<Property Name="Status" Type="String" Nullable="true" />
<Property Name="SerialNumberString" Type="String" Nullable="true" />
</EntityType>
<EntityType Name="License" BaseType="MyEntities.Product" >
<Property Name="ProductCode" Type="String" Nullable="true" />
<Property Name="Version" Type="String" Nullable="true" />
</EntityType>
Ive dann die Eigenschaft hinzugefügt folgt ...
public partial class Key
{
public int? SerialNumber
{
get
{
int serialNumber;
if (int.TryParse(SerialNumberString, out serialNumber))
{
return serialNumber;
}
return null;
}
set
{
SerialNumberString = value.ToString();
ReportPropertyChanged("SerialNumber");
}
}
}
Wenn ReportPropertyChanged jetzt aufgerufen wird, wird die Ausnahme ausgelöst:
System.ArgumentException: Die Eigenschaft 'SerialNumber' hat keine gültige Entitätszuordnung für das Entitätsobjekt. Weitere Informationen finden Sie in der Entity Framework-Dokumentation.
Ich habe IDENTICAL-Code in einer anderen generierten Datenklasse, die nicht wirft, der einzige Unterschied ist die Vererbung, was los ist ??
SerialNumberString ist einer nvarchar -Spalte zugeordnet, die nur numerische Daten enthält. Daher fügt meine hinzugefügte SerialNumber-Eigenschaft das Wrapping ein, sodass ich sie als Zahl verwenden kann. – andrej351
Ja, und ich sage vielleicht, dass EF das nicht mag.Benennen Sie "SerialNumber" in "SerialNumber2" um und sehen Sie, ob es sich über die "SerialNumber2" beschwert. –
yeh es tut, unabhängig von Name – andrej351