Je m'excuse si c'est très trivial, je suis nouveau à OData et j'essaye de mettre en place mon modèle.ODataConventionModelBuilder voit ma propriété List comme un nouvel EntitySet et lance 'L'entité' List_1Of [Type] 'n'a pas de clé définie.'
J'ai besoin cette classe pour elle:
public class Event
{
public bool Advertised { get; set; }
public List<Attendee> Attendees { get; set; }
[StringLength(1000)]
public string Banner { get; set; }
[Required]
public string Description { get; set; }
public Guid? Etag { get; set; }
[Required]
public DateTime From { get; set; }
public string Host { get; set; }
public int Id { get; set; }
public List<string> Photos { get; set; }
public string SponsorsSummary { get; set; }
public string SponsorsTitleText { get; set; }
[StringLength(1000)]
public string Summary { get; set; }
public IList<string> Tags { get; set; }
public int Target { get; set; }
[StringLength(1000)]
public string Thumbnail { get; set; }
[Required]
public string Title { get; set; }
public DateTime? To { get; set; }
public Address Venue { get; set; }
public string VenueDetails { get; set; }
[Required]
public bool Viewable { get; set; }
}
J'ajouté à mon ODataConventionModelBuilder
:
builder.EntitySet<Event>("Events");
builder.EntityType<Event>().HasKey(x => x.Id);
builder.EntityType<Event>().HasOptional(x => x.Attendees);
Mais quand j'essayé de courir, j'eu cette erreur:
The entity 'List_1OfAttendee' does not have a key defined.
Apparemment, le ODataConventionModelBuilder
essaie de transformer mon List<Attendee>
en une nouvelle entité Il s'agit d'un type complexe que j'utilise ici dans le cadre du modèle, ce n'est pas une propriété de navigation et il n'est utilisé nulle part ailleurs.
J'ai essayé d'ajouter Attendee
à mon modèle comme celui-ci:
builder.EntitySet<Attendee>("Attendees");
builder.EntityType<Attendee>().HasKey(x => x.Name);
Mais j'ai eu le même message, j'ai donc essayé de changer le nom EntitySet pour correspondre au nom de l'erreur:
builder.EntitySet<Attendee>("List_1OfAttendee");
builder.EntityType<Attendee>().HasKey(x => x.Name);
Mais encore une fois, cela n'a rien changé.
Pour référence mon backend est RavenDB, et je n'utilise pas Entity Framework.
Je suis vraiment confus, les seuls exemples que j'ai trouvés utilisent une collection de types complexes pour les propriétés de navigation seulement, mais ici c'est juste une simple propriété nécessaire pour mon modèle. Tout avis est le bienvenue
Merci, cela a fait l'affaire! Je ne peux pas croire que je n'ai pas repéré cela dans la documentation ... Ils parlent principalement des attributs de la section du constructeur du modèle de la Convention – AlineF
Vous êtes les bienvenus :) – juunas