Spinning weiter auf der previous question Ich hatte. Angenommen, ich erwerbe BlogEntry und Comment from Post. Ich möchte sie jetzt ein wenig anpassen. Ein Kommentar zu einem Blog-Post braucht keinen Titel, aber ein Kommentar braucht ein Benutzer Referenz so dass ich diese beiden Felder aus Post und in Kommentar und Blog-Eintrag wie folgt bewegen:EF4 - benutzerdefinierte ObjectContext und Vererbungsfrage
public abstract class Post
{
public virtual int Id { get; set; }
public virtual string Text { get; set; }
public virtual DateTime CreatedAt { get; set; }
}
public class BlogEntry : Post
{
public virtual string Header { get; set; }
public virtual Blog Blog { get; set; }
public virtual IEnumerable<Comment> Comments { get; set; }
}
public class Comment : Post
{
public virtual string Header { get; set; }
public virtual int UserId { get; set; }
public virtual BlogEntry BlogEntry { get; set; }
}
Jetzt erstelle ich meine benutzerdefinierten Objektkontext :
public class EntityContext : System.Data.Objects.ObjectContext
{
public EntityContext() : base("name=Entities", "Entities")
{
this.Blogs = CreateObjectSet<Blog>();
this.Posts = CreateObjectSet<Post>();
this.Entries = CreateObjectSet<BlogEntry>();
this.Comments = CreateObjectSet<Comment>();
}
public ObjectSet<Blog> Blogs { get; set; }
public ObjectSet<Post> Posts { get; set; }
public ObjectSet<BlogEntry> Entries { get; set; }
public ObjectSet<Comment> Comments { get; set; }
}
das gibt mir Nachricht folgendes eigentlich recht beschreibend Fehler:
Prüfnorm warf Ausnahme: System.ArgumentException: Es gibt keine EntitySets für den angegebenen Entitätstyp "BlogEntry" für den angegebenen Entitätstyp definiert. Wenn "BlogEntry" ein abgeleiteter Typ ist, verwenden Sie stattdessen den Basistyp . Zum Beispiel, Sie würde diesen Fehler sehen, wenn Sie CreateObjectSet() aufgerufen und DiscontinuedProduct ist ein bekanntes Entitätstyp ist aber nicht direkt zu einem EntitySet abgebildet. Der DiscontinuedProduct-Typ kann ein abgeleiteter Typ sein, wobei der übergeordnete Typ dem EntitySet zugeordnet ist oder der DiscontinuedProduct-Typ möglicherweise nicht einem EntitySet zugeordnet ist. Parametername: TEntity
Jetzt ist ich nicht ein Meister der Vererbung und Sachen, aber die Art, wie ich das sehen würde eine Reihe von Einträgen und Kommentaren als ObjectSet < Beitrag hinzufügen>, die meine Probleme lösen würden?
Ja, ich habe keine Zeit gehabt, weiter um es zu betrachten. Was du sagst, klingt wahr. Ich habe gerade einen riesigen Blogbeitrag über meine Ergebnisse geschrieben. Sieht so aus, als müsste ich morgen noch eine weitere über POCO Vererbung schreiben :) – mhenrixon
Danke für den Tipp mit nur dem Entfernen der Tasche! :) – mhenrixon