2013-10-22 9 views
5

में विदेशी कुंजी की स्थापना करना मेरे पास 2 मॉडल हैं और एक विदेशी कुंजी संबंध बनाना चाहते हैं। असल में प्रत्येक नोट को उपयोगकर्ता को असाइन किया जाना चाहिए।एएसपी.नेट एमवीसी 4

[Table("UserProfile")] 
public class UserProfile 
{ 
    [Key] 
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] 
    public int UserId { get; set; } 
    public string UserName { get; set; } 
    public string Email { get; set; } 
} 

[Table("UserNotes")] 
public class UserNotes 
{ 
    [Key] 
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] 
    public int NoteId { get; set; } 

    [ForeignKey("UserProfile")] 
    public virtual int UserId { get; set; } 

    public string Title { get; set; } 
    public string Content { get; set; } 
    public string Added { get; set; } 
    public DateTime? Edited { get; set; } 
} 

मैं जब मैं नया उपयोगकर्ता टिप्पणी जोड़ने का प्रयास मिलती है: ForeignKeyAttribute संपत्ति 'प्रयोक्ता-आईडी' प्रकार 'note.DO.Models.UserNotes' पर पर मान्य नहीं है। नेविगेशन प्रॉपर्टी 'UserProfile' निर्भर प्रकार 'नोट.DO.Models.UserNotes' पर नहीं मिली थी। नाम मान वैध नेविगेशन संपत्ति का नाम होना चाहिए।

मैंने इसी तरह के प्रश्नों में पाए गए कई संयोजनों की कोशिश की है, लेकिन उनमें से कोई भी काम नहीं करता है।

+0

क्या इसका एएसपीनेट के साथ कुछ लेना देना है? –

उत्तर

15

इस प्रयास करें:

public virtual int UserId { get; set; } 

[ForeignKey("UserId")] 
public virtual UserProfile User { get; set; } 

इस तरह, आप नेविगेशन संपत्ति के साथ विदेशी कुंजी संपत्ति जोड़ी।

संपादित करें: आप भी इसे इस तरह लिख सकते हैं:

[ForeignKey("UserProfile")] 
public virtual int UserId { get; set; } 

public virtual UserProfile UserProfile { get; set; } 

उन दो के टुकड़े एक ही परिणाम देता है। आपका त्रुटि संदेश कहता है कि "UserProfile" प्रॉपर्टी गुम है, आपको बस इसे जोड़ना होगा।

+0

विदेशी कुंजी घोषित करते समय हमें वर्चुअल कीवर्ड का उपयोग करने की आवश्यकता क्यों है? कोई भी मौका आप इसका जवाब दे सकते हैं? – ObedMarsh

संबंधित मुद्दे