Ich versuche Nullable
Guid
in Entity Framework zu verwenden, aber wenn ich die Änderung zu übernehmen habe ich versucht Validierungsnachricht bin immer durch Fremdschlüssel ist null, ich habe unter Domain-Klasse, DomainType
Klasse hat Kind DomainCustomField
: -Entity Framework mit Nullable Guid? Validierungsfehler verursacht
DomainType.cs
public class DomainType
{
public Guid? Id
{
get;
set;
}
private IList<DomainCustomField> _domainCustomFields;
public string Name
{
get;
set;
}
public Guid? AccountId
{
get;
set;
}
public virtual IList<DomainCustomField> DomainCustomFields
{
get
{
return this._domainCustomFields;
}
set
{
this._domainCustomFields = value;
}
}
}
DomainCustomField.cs
public class DomainCustomField
{
public Guid? Id
{
get;
set;
}
public string Name
{
get;
set;
}
public Guid? DomainTypeId
{
get;
set;
}
}
unten ist Mapping: -
modelBuilder.Domain<DomainCustomField>().HasKey((DomainCustomField p) => new
{
p.Id,
p.DomainTypeId
});
modelBuilder.Domain<DomainCustomField>()
.Property(p => p.Id)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
modelBuilder.Domain<DomainType>()
.HasMany(p => p.DomainCustomFields)
.WithRequired()
.HasForeignKey<Guid?>(x => x.DomainTypeId);
unten ist Beispielcode, den ich versuchte einzufügen.
DomainType domainType = new DomainType()
{
AccountId = customer.Id
};
domainType.DomainCustomFields.Add(new DomainCustomField()
{
Name = "Test"
});
Workspace.Add<DomainType>(domainType);
Workspace.CommitChanges();
Fehler: - Validierungsfehler für DomainTypeId erforderlich ist
in dem gleichen Code, wenn ich Guid?
-Guid
in ID-Variable ändern korrekt dann seine Arbeit. Ich weiß nicht, wie ich mit nullable
Guid
umgehen soll. Muss ich den Elternschlüssel in der Kinderreferenz manuell setzen? wie funktioniert es dann im Fall von Guid
?
Hinweis: - Ich benutze Guid
, weil ich mit verteilte Datenbank arbeite, wo ID aus mehreren Quellsystemen generieren kann. Ich verwende Guid?
, weil standardmäßig Guid
generieren 00000000-0000-0000-0000-000000000000
für leere Guid
, die Datenbankgröße wachsen kann.
Haben Sie versucht, (add Navigations Eigenschaft 'DomainType' im Modell)' .HasOptional' -> 'modelBuilder.Domain() .Property (p => p.Id) ..HasDatabaseGeneratedOption (DatabaseGeneratedOption.Identity) .HasOptional (p => Domain Name) .. HasForeignKey (x => x.DomainTypeId) ' –
Developer
Ja, ich habe versucht, HasOptional. Es ist nicht dieses Problem. Die Eltern-ID wird nicht in die untergeordnete Variable gesetzt, obwohl sie verknüpft sind. –
Dieser Fehler macht für mich Sinn, vielleicht bin ich hier total falsch. Wenn Ihr Primärschlüssel "nullable" ist (nicht sicher, wie der primäre Schlüssel "nullable" funktioniert), legt die EF möglicherweise keine richtige Beziehung für die untergeordnete Sammlung fest (da die übergeordnete ID null ist). – Developer