2014-04-17 17 views
9

Tôi mới sử dụng ứng dụng Windows Store và yêu cầu sử dụng cơ sở dữ liệu. Tôi đã giải quyết cho sqlite và đang sử dụng gói sqlite-net. Tuy nhiên, tôi không chắc chắn làm thế nào để tạo ra một mối quan hệ m2m giữa hai mô hình.Tạo mối quan hệ ManyToMany giữa hai mô hình

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

Tôi có phải sử dụng Danh sách không? hoặc một byte []? Làm cách nào tôi có thể đảm bảo rằng tài sản sẽ bị hạn chế thành ModelB?

Trả lời

13

Bạn có thể sử dụng sqlite-net-extensions, nó có thuộc tính ManyToMany có vẻ hoàn hảo cho nhu cầu của bạn. Đây là một ví dụ về việc sử dụng nó từ trang web của họ.

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

Cảm ơn, chính xác những gì tôi cần. Tôi có một câu hỏi thực sự noob mặc dù, làm thế nào để tôi thêm nó vào dự án hiện tại của tôi kể từ khi tập tin tải về là một dự án studio trực quan. – SunnySydeUp

+0

Thật không may là không có gói NuGet hoặc nhị phân, vì vậy bạn sẽ phải xây dựng nó. –

+0

Tôi không thể mở dự án một mình để xây dựng nó. Có thể là vì tôi đang sử dụng hình ảnh studio thể hiện. Tôi sẽ làm một số đào nhiều hơn và nếu tôi không thể tìm thấy bất kỳ giải pháp khác, hoặc nếu tôi quản lý để xây dựng nó, tôi sẽ chấp nhận câu trả lời của bạn. – SunnySydeUp

Các vấn đề liên quan