Ich versuche, 2 Entitäten, Benutzer- und Benutzerrezensionen zu erstellen, wo Benutzerrezensionen einen zusammengesetzten Primärschlüssel haben, der die IDs der Benutzer ist, derjenige, der überprüft wurde und wer es getan hat Dieser zusammengesetzte Primärschlüssel ist auch ein Fremdschlüssel für den Primärschlüssel in der Benutzertabelle. EF erstellt jedoch eine zusätzliche Spalte, in der ich den Punkt nicht sehe, auch wenn ich ein Benutzerüberprüfungsobjekt in diese Spalte speichere wird nicht ausgefüllt, es ist immer leer.Composite-Primärschlüssel und Fremdschlüssel Code First
Dies führt dazu, dass beim Versuch, einen Benutzer mit seinen Bewertungen abzurufen, die Rezensionssammlung immer leer ist, es sei denn, die Spalte User_SubjectId enthält die ID des Benutzers.
Meine Frage ist, wie diese
return _context.Users
.Include(u => u.Reviews)
.Where(u => u.SubjectId.Equals(subjectId));
Die Bewertungen Sammlung ist immer leer
Einheit User Review
using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace API.Data.Entities
{
public class UserReview
{
[Key, Column(Order = 0), ForeignKey("Reviewer")]
public string ReviewerId { get; set; } //The user that wrote the review
[Key, Column(Order = 1), ForeignKey("ReviewedUser")]
public string ReviewedUserId { get; set; } //The user who was reviewed
[Required]
[Range(1, 5)]
public int Rating { get; set; }
[Required]
public DateTimeOffset DateCreated { get; set; }
[Required]
public virtual User Reviewer { get; set; }
[Required]
public virtual User ReviewedUser { get; set; }
}
}
Das ist User-Einheit wie folgt
public class User
{
[Key]
[Required]
public string SubjectId { get; set; }
public User()
{
Reviews = new List<UserReview>();
}
public virtual ICollection<UserReview> Reviews { get; set; }
}
Allerdings, wenn ich die Migration fügen Sie eine weitere Spalten in meiner Tabelle Kundenberichte erstellt wird, wie auf diesem Bild gezeigt, die Spalte User_SubjectId
Ich weiß nicht, ob dies ein Fehler ist in EF oder ich haben meine Karten falsch gemacht, auf jeden Fall irgendwelche Ideen?
Danke
Ihre unbekannte Spalte wird von der User.Reviews -Eigenschaft erstellt. Sie haben seinen Fremdschlüssel nicht zugeordnet, sodass EF den Namen automatisch generiert. – Kinetic
Was meinst du ist nicht zugeordnet ?, überprüfen Sie meine UserReview-Entität, die 2 Fremdschlüssel sind dort –
Bewertungen ist mit welchem der Fremdschlüssel verknüpft? – Kinetic