2017-08-25 2 views
0

Ich arbeite mit Entity Framework. Ich habe nicht genug Erfahrung, um irgendwelche Probleme zu lösen. Das Problem, das ich jetzt bin vor, ist dies: Ich habe zwei Klassen, wie hier gezeigt:Wie wird eine Entity-spezifische Eigenschaft in Entity Framework eingebunden?

public class AspNetUser: NormalUser 
{ 
    [Key] 
    public string UserId { get; set; } 

    public string PIN { get; set; } 

    public string FullName { get { return this.LastName + " , " + this.FirstName; } } 
} 

public class OfferReview 
{ 
    [Key] 
    public string OfferReviewId { get; set; } 

    public string UserId { get; set; } 
    public string Review { get; set; } 

    public virtual AspNetUser User { get; set; } 
} 

Ich brauche alle OfferReview Eigenschaft mit AspNetUser.FullName Eigenschaft binden ==> ich so versucht:

return context.OfferReviews 
       .Where(It => It.OfferId == offerId) 
       .Include(it => it.User.FullName) 
       .ToList(); 

Hier offerId ist ein Funktionsparameter. Ich bin nicht in der Lage, die volle Funktion zu zeigen ....

Ich kann leicht die obige Anforderung mit Hilfe von linq Join erhalten. Aber ich möchte etwas über wie Lambda-Ausdruck.

Ist es möglich? Oder wenn möglich wie auch wenn nicht möglich, gibt es dann einen anderen Weg? Bitte helfen

Antwort

1

Sie es nach Technik Can Do Ansichtsmodell

Diese Ansichtsmodell:

 public class ViewModel 
{ 
    public string OfferReviewId { get; set; } 
    public string UserId { get; set; } 
    public string Review { get; set; } 
    public string LastName { get; set; } 
    public string FirstName { get; set; } 
    public string FullName { get { return this.LastName + " , " + this.FirstName; } } 
} 

diese Abfrage:

 var query = context.OfferReview 
      .Where(It => It.OfferReviewId == "1") 
      .Select(p => new ViewModel 
       { 
        OfferReviewId = p.OfferReviewId, 
        Review = p.Review, 
        UserId = p.UserId, 
        FirstName = p.User.FirstName, 
        LastName = p.User.LastName 
       }).ToList(); 
1

Ihre Anfrage sollte:

return context.OfferReviews 
       .Where(It => It.OfferId == offerId) 
       .Include(it => it.User) 
       .ToList(); 

Diese eine Liste zurückgeben von OfferReview Entitäten, die jeweils ein User Objekt enthalten.

Jetzt in Ihrer Ansicht können Sie binden OfferReview.User.FullName.

Verwandte Themen