2014-04-17 22 views
9

Bir Windows Mağazası uygulaması oluşturmak için yeni biriyim ve bir veritabanı kullanımı gerektirir. Sqlite için yerleştim ve sqlite-net paketi kullanıyorum. Ancak, iki model arasında bir m2m ilişki nasıl oluşturulacağı konusunda emin değilim.İki model arasında ManyToMany ilişkisi oluşturma

class ModelA 
{ 
    [PrimaryKey, AutoIncrement] 
    public int Id { get; set; } 
    public string name { get; set; } 
    <relationship to ModelB> 
} 


class ModelB 
{ 
    [PrimaryKey, AutoIncrement] 
    public int Id { get; set; } 
    public string name { get; set; } 
} 

Liste kullanmak zorunda mıyım? ya da bir bayt []? Mülkiyetin ModelB ile sınırlandırılacağını nasıl garanti edebilirim?

cevap

13

sqlite-net-extensions kullanabilirsiniz, ihtiyaçlarınız için mükemmel görünen bir ManyToMany özniteliği vardır. Bu, kendi web sitesinden kullanımının bir örneğidir.

public class Student 
{ 
    [PrimaryKey, AutoIncrement] 
    public int StudentId { get; set; } 

    public string Name { get; set; } 
    public int Age { get; set; } 

    [ManyToMany(typeof(StudentsGroups))] 
    public List<Group> Groups { get; set; } 

    public int TutorId { get; set; } 
    [ManyToOne("TutorId")] // Foreign key may be specified in the relationship 
    public Teacher Tutor { get; set; } 
} 

public class Group 
{ 
    [PrimaryKey, AutoIncrement] 
    public int Id { get; set; } 

    public string GroupName { get; set; } 

    [ForeignKey(typeof(Teacher))] 
    public int TeacherId { get; set; } 

    [ManyToOne] 
    public Teacher Teacher { get; set; } 

    [ManyToMany(typeof(StudentsGroups))] 
    public List<Student> Students { get; set; } 
} 

public class StudentGroups 
{ 
    [ForeignKey(typeof(Student))] 
    public int StudentId { get; set; } 

    [ForeignKey(typeof(Group))] 
    public int GroupId { get; set; } 
} 
+0

Teşekkürler, tam olarak ihtiyacım olan şey. Yine de, gerçekten indirilmiş bir dosyam var, çünkü indirilen dosya görsel bir stüdyo projesi olduğundan, mevcut projeme nasıl ekleyebilirim. – SunnySydeUp

+0

Maalesef bir nuGet paketi veya bir ikili yok, bu yüzden onu oluşturmanız gerekecek. –

+0

Projeyi kendi başıma inşa edemiyorum. Belki görsel stüdyo ifadesini kullanıyorum. Biraz daha kazmaya çalışacağım ve başka bir çözüm bulamazsam ya da onu inşa etmeyi başarabilirsem, cevabını kabul edeceğim. – SunnySydeUp

İlgili konular