Wie Karte einzelne Entität mit mehreren Tabelle
Ich möchte Daten aus zwei Tabellen mit single Entity-Klasse. Wie??
public class HomeViewModel
{
[Key]
[Column("candidate_ID")]
public int candidateID { get; set; }
[Column("first_name")]
public string firstName { get; set; }
[Column("last_name")]
public string lastName { get; set; }
public string emailID { get; set; }
public string mb_country_code { get; set; }
public int mobile_no { get; set; }
}
Oben genannten entity-Klasse enthält 6 Eigentum, wo 3 Eigenschaft steht für eine "Tabelle1", und 3 repräsentiert Tabelle2.
Auf der Datenbank-Tabelle 1 enthält candidate_id als Primärschlüssel und in der Tabelle zwei hält candidate_id als foreign key
Update: Was ich getan habe ist Hinzugefügt DBContext-Klasse
public class EmployeeMonitoring : DbContext
{
public DbSet<HomeViewModel> homeViewModel { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<HomeViewModel>().Map(m =>
{
m.Properties(a => new { a.candidateID, a.firstName, a.lastName,a.status });
m.ToTable("table1");
}).Map(m =>
{
m.Properties(c => new { c.candidateID,c.emailID, c.mobile_no, c.mb_country_code });
m.ToTable("table2");
});
}
}`
und an der Controller-Aktion, die ich verwendet folgende Linq-to-Entity-Abfrage
var data = db.homeViewModel.ToList();
Aber es gibt nichts, ich.e 0 zählen.
- Ich empfehle eine mvc-tutorial
- Fügen Sie den tag entity framework 4.1 als gut.
- wie genau wird eine MVC-tutorial lehren über Entity-Framework-Konzepte? Jeder MVC-tutorial nur für basic-EF, keine fortgeschrittenen Konzepte wie dieses.
- Die original-version seine Frage hatte einen einfachen Controller-action Methode mit einem leeren call Anzeigen() und ein Kommentar-Sprichwort, "wie bekomme ich die Daten hier rein?"
- Nicht die gleiche Frage zweimal in zwei verschiedene Arten.
- Sie sollten diese situation vermeiden. für eine saubere Lösung, jedes Modell sollte die Zuordnung zu einer Tabelle. dann erstellen Sie ein view-Modell die Kombination der beiden Modelle.
- du hast Recht , aber jetzt schlagen Sie mich möglichen Weg, der im gegebenen Kontext
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie sind, was darauf hindeutet, dass Tabelle2 lediglich besitzt einen foreign key auf Tabelle 1, hat aber einen anderen primary key, dann kannst du nicht wirklich tun, was Sie gefragt haben. Einfach halten ein foriegn bedeutet, dass die eins-zu-viele-Beziehung, und es gibt keinen Weg, um die Karte einer einzigen Person über ein eins-zu-viele-Beziehung, wie das (auch wenn Ihre Daten enthält nur einen Eintrag, das Modell relationship-Typ ist immer noch einer zu vielen)
Wenn du meinst, dass Tabelle2 hat eine primär-und Fremdschlüssel von candidate_id (und so ist es eine 1 zu 1-Zuordnung) Sie können dann ordnen Sie Sie in einer einzelnen Entität, die ziemlich leicht mit Inheritence hier beschrieben:
http://weblogs.asp.net/manavi/archive/2010/12/28/inheritance-mapping-strategies-with-entity-framework-code-first-ctp5-part-2-table-per-type-tpt.aspx
Wenn alle Sie wollen, ist zu einem einzigen Objekt enthält Daten aus zwei Tabellen, dann ist das eine relativ einfache linq-Abfrage, die ich nicht bekommen, weil ich wirklich nicht weiß, was genau du suchst hier.
Prüfen Sie die Daten in daatbase Tabelle ersten.
Es ist, weil Sie möglicherweise nicht über die verbundenen Daten in Tabelle2. ich.e "Tabelle1" primary key-Wert (was ist candidate_id) ist nicht vorhanden in Tabelle2 foreign key candidateID...
Heißt diese Person Aufspaltung. Machen Sie Ihre Arbeit
CandidateID
muss Primärschlüssel in beiden Tabellen und Fremdschlüssel in der zweiten Tabelle (Entität aufteilen funktioniert nur mit eins-zu-eins-Beziehungen in einer Datenbank).Edit: gibt Es eine weitere Einschränkung. Entitätsaufteilung nicht erlauben optionale Beziehungen. Datensätze in beiden Tabellen vorhanden ist, um diese Arbeit zu machen also, wenn Ihr Tabelle2 Einträge sind optional, Sie müssen anzeigen beide Tabellen getrennt und bauen Ihre view-Modell in der Anwendung, aus den geladenen Datensätzen.