2014-04-17 18 views
9

Jestem nowy w tworzeniu aplikacji sklepowych i wymaga korzystania z bazy danych. Postawiłem na sqlite i używam pakietu sqlite-net. Jednak nie jestem pewien, jak utworzyć relację m2m między dwoma modelami.Tworzenie ManyToMany relacji między dwoma modelami

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; } 
} 

Czy muszę użyć listy? lub bajt []? Jak mogę zagwarantować, że nieruchomość będzie ograniczona do ModelB?

Odpowiedz

13

Być może będziesz mógł używać sqlite-net-extensions, ma on atrybut ManyToMany, który wydaje się być idealny dla Twoich potrzeb. Jest to przykład jego wykorzystania ze strony internetowej.

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

Dzięki, dokładnie to, co potrzebne. Mam jedno pytanie typu noob, jak dodać go do mojego istniejącego projektu, ponieważ pobrany plik jest projektem studyjnym. – SunnySydeUp

+0

Niestety nie ma pakietu nuGet ani binarnego, więc będziesz musiał go skompilować. –

+0

Nie mogę otworzyć projektu, nie mówiąc już o jego budowie. Może dlatego, że używam visual studio express. Zrobię więcej kopania i jeśli nie znajdę żadnego innego rozwiązania lub jeśli uda mi się je zbudować, przyjmuję twoją odpowiedź. – SunnySydeUp

Powiązane problemy