C# 如何设置导航属性

C# 如何设置导航属性,c#,.net,asp.net-mvc-3,asp.net-mvc-4,C#,.net,Asp.net Mvc 3,Asp.net Mvc 4,我正在尝试在MVC4中设置一个简单的库应用程序 我有以下实体 public class Book { public Book() { BorrowedBooks = new List<BorrowedBooks>(); } public int Id { get; set; } public string Title { get; set; } public string Author { get; set; }

我正在尝试在MVC4中设置一个简单的库应用程序

我有以下实体

public class Book
{
    public Book()
    {
        BorrowedBooks = new List<BorrowedBooks>();

    }
    public int Id { get; set; }
    public string Title { get; set; }
    public string Author { get; set; }        
    public virtual ICollection<BorrowedBooks> BorrowedBooks { get; set; }
}
 public class Borrower
{
    public Borrower()
    {
        BorrowedBooks = new List<BorrowedBooks>();
    }
    public int Id { get; set; }
    public string Firstname { get; set; }
    public string Lastname { get; set; }


    public virtual ICollection<BorrowedBooks> BorrowedBooks { get; set; }
}
 public class BorrowedBooks
{
    public int Id { get; set; }
    public int BookId { get; set; }
    public int BorrowerId { get; set; }
    public DateTime DateBorrowed { get; set; }

    public virtual Book Book { get; set; }
    public virtual Borrower Borrower { get; set; }

}
公共课堂教材
{
公共书籍()
{
借阅图书=新列表();
}
公共int Id{get;set;}
公共字符串标题{get;set;}
公共字符串作者{get;set;}
公共虚拟ICollection借阅图书{get;set;}
}
公共类借款人
{
公共借款人()
{
借阅图书=新列表();
}
公共int Id{get;set;}
公共字符串名{get;set;}
公共字符串Lastname{get;set;}
公共虚拟ICollection借阅图书{get;set;}
}
公共类借书
{
公共int Id{get;set;}
public int BookId{get;set;}
公共int借用器ID{get;set;}
公共日期时间日期借用{get;set;}
公共虚拟图书{get;set;}
公共虚拟借用者{get;set;}
}
我设置了2个存储库

 public class BookRepository : IBookRepository
    {
        private List<Book> books = new List<Book>
            {
                new Book { Id = 1, Title = "Queen of the road", Author = "Tricia Stringer", BorrowedBooks = new List<BorrowedBooks>{  new BorrowedBooks {BookId = 1, BorrowerId = 1, DateBorrowed = DateTime.Parse("26/03/2014")}} },
                new Book { Id = 2, Title = "Don't look now", Author = "Paul Jennings" },
                new Book { Id = 3, Title = "Too bold to die", Author = "Ian McPhedran" },
                new Book { Id = 4, Title = "The rosie project", Author = "Graeme Simson" },
                new Book { Id = 5, Title = "In great spirits", Author = "Archie Barwick" },
                new Book { Id = 6, Title = "The vale girl", Author = "Nelika Mcdonald" },
                new Book { Id = 7, Title = "Watching you", Author = "Michael Robotham" },
                new Book { Id = 8, Title = "Stillways", Author = "Steve Bisley" },
            };

        private List<BorrowedBooks> borrowedBooks = new List<BorrowedBooks>
            {
                new BorrowedBooks {BookId = 8, Book = new Book { Id = 8, Title = "Stillways", Author = "Steve Bisley" },   BorrowerId = 2,  DateBorrowed = DateTime.Parse("01/04/2014")},
                new BorrowedBooks {BookId = 6, BorrowerId = 4, DateBorrowed = DateTime.Parse("08/04/2014")},
                new BorrowedBooks {BookId = 2, BorrowerId = 4, DateBorrowed = DateTime.Parse("08/04/2014")},
                new BorrowedBooks {BookId = 1, BorrowerId = 1, DateBorrowed = DateTime.Parse("26/03/2014")},

            };

        public IEnumerable<Book> Search()
        {

            return books;

        }

    }



public class BorrowerRepository : IBorrowerRepository
    {
        private List<Borrower> borrowers = new List<Borrower>
            {
                new Borrower { Id = 1, Firstname = "John", Lastname = "Smith" },
                new Borrower { Id = 2, Firstname = "Mary", Lastname = "Jane" },
                new Borrower { Id = 3, Firstname = "Peter", Lastname = "Parker" },
                new Borrower { Id = 4, Firstname = "Eddie", Lastname = "Brock" },
            };


        public void Add(Borrower borrower)
        {
            this.borrowers.Add(borrower);
        }
    }
公共类图书存储库:IBookRepository
{
私人列表书籍=新列表
{
新书{Id=1,Title=“TheQueen of the road”,Author=“Tricia Stringer”,借阅图书=新列表{new借阅图书{BookId=1,借阅图书Id=1,DateBorrowed=DateTime.Parse(“2014年3月26日”)},
新书{Id=2,Title=“现在不要看”,Author=“Paul Jennings”},
新书{Id=3,Title=“太大胆而不死”,Author=“Ian McPhideran”},
新书{Id=4,Title=“The rosie project”,Author=“Graeme Simson”},
新书{Id=5,Title=“精神振奋”,Author=“Archie Barwick”},
新书{Id=6,Title=“山谷女孩”,Author=“Nelika Mcdonald”},
新书{Id=7,Title=“看着你”,Author=“Michael Robotham”},
新书{Id=8,Title=“Stillways”,Author=“Steve Bisley”},
};
私有列表借阅图书=新列表
{
新借来的书{BookId=8,Book=newbook{Id=8,Title=“Stillways”,Author=“Steve Bisley”},借来的书Id=2,DateBorrowed=DateTime.Parse(“01/04/2014”)},
新借阅图书{BookId=6,BorrowerId=4,DateBorrowed=DateTime.Parse(“08/04/2014”)},
新借阅的图书{BookId=2,BorrowerId=4,DateBorrowed=DateTime.Parse(“08/04/2014”)},
新借阅图书{BookId=1,BorrowerId=1,DateBorrowed=DateTime.Parse(“26/03/2014”)},
};
公共IEnumerable搜索()
{
还书;
}
}
公共类借用存储:IBorrowerRepository
{
私人名单借款人=新名单
{
新借款人{Id=1,Firstname=“John”,Lastname=“Smith”},
新借款人{Id=2,Firstname=“Mary”,Lastname=“Jane”},
新借款人{Id=3,Firstname=“Peter”,Lastname=“Parker”},
新借款人{Id=4,Firstname=“Eddie”,Lastname=“Brock”},
};
公共无效添加(借款人)
{
本.借款人.新增(借款人);
}
}
如何将属性链接在一起?也就是说,在我的BorrowerRepository搜索方法中,它返回所有数据,但账面价值只是一个ID,如何将其与图书存储库中的值链接


我的导航属性设置错误了吗?还是我设置存储库数据的方式?

实现这一点的一种方法是添加一个静态类,将数据集合保存在内存中。 然后,在每个存储库中,您将任何与数据相关的操作委托给数据存储中的相应集合,并可以使用
Linq
执行查询

 public static class DataStore
{
    private static List<Book> books = new List<Book>
        {
            new Book { Id = 1, Title = "Queen of the road", Author = "Tricia Stringer", BorrowedBooks = new List<BorrowedBooks>{  new BorrowedBooks {BookId = 1, BorrowerId = 1, DateBorrowed = DateTime.Parse("26/03/2014")}} },
            new Book { Id = 2, Title = "Don't look now", Author = "Paul Jennings" },
            new Book { Id = 3, Title = "Too bold to die", Author = "Ian McPhedran" },
            new Book { Id = 4, Title = "The rosie project", Author = "Graeme Simson" },
            new Book { Id = 5, Title = "In great spirits", Author = "Archie Barwick" },
            new Book { Id = 6, Title = "The vale girl", Author = "Nelika Mcdonald" },
            new Book { Id = 7, Title = "Watching you", Author = "Michael Robotham" },
            new Book { Id = 8, Title = "Stillways", Author = "Steve Bisley" },
        };

    private static List<BorrowedBooks> borrowedBooks = new List<BorrowedBooks>
        {
            new BorrowedBooks {BookId = 8, Book = new Book { Id = 8, Title = "Stillways", Author = "Steve Bisley" },   BorrowerId = 2,  DateBorrowed = DateTime.Parse("01/04/2014")},
            new BorrowedBooks {BookId = 6, BorrowerId = 4, DateBorrowed = DateTime.Parse("08/04/2014")},
            new BorrowedBooks {BookId = 2, BorrowerId = 4, DateBorrowed = DateTime.Parse("08/04/2014")},
            new BorrowedBooks {BookId = 1, BorrowerId = 1, DateBorrowed = DateTime.Parse("26/03/2014")},

        };

    private static List<Borrower> borrowers = new List<Borrower>
        {
            new Borrower { Id = 1, Firstname = "John", Lastname = "Smith" },
            new Borrower { Id = 2, Firstname = "Mary", Lastname = "Jane" },
            new Borrower { Id = 3, Firstname = "Peter", Lastname = "Parker" },
            new Borrower { Id = 4, Firstname = "Eddie", Lastname = "Brock" },
        };

    public static List<Book> Books { get { return books; } }
    public static List<BorrowedBooks> BorrowedBooks { get { return borrowedBooks; } }
    public static List<Borrower> Borrowers { get { return borrowers; } }
}

public class BookRepository : IBookRepository
{
    public IEnumerable<Book> Search()
    {

        return DataStore.Books.Where (b => b.Author == "Paul Jennings");
    }
}

public class BorrowerRepository : IBorrowerRepository
{
    public void Add(Borrower borrower)
    {
        DataStore.Borrowers.Add(borrower);
    }
} 
公共静态类数据存储
{
私有静态列表书籍=新列表
{
新书{Id=1,Title=“TheQueen of the road”,Author=“Tricia Stringer”,借阅图书=新列表{new借阅图书{BookId=1,借阅图书Id=1,DateBorrowed=DateTime.Parse(“2014年3月26日”)},
新书{Id=2,Title=“现在不要看”,Author=“Paul Jennings”},
新书{Id=3,Title=“太大胆而不死”,Author=“Ian McPhideran”},
新书{Id=4,Title=“The rosie project”,Author=“Graeme Simson”},
新书{Id=5,Title=“精神振奋”,Author=“Archie Barwick”},
新书{Id=6,Title=“山谷女孩”,Author=“Nelika Mcdonald”},
新书{Id=7,Title=“看着你”,Author=“Michael Robotham”},
新书{Id=8,Title=“Stillways”,Author=“Steve Bisley”},
};
私有静态列表借阅图书=新列表
{
新借来的书{BookId=8,Book=newbook{Id=8,Title=“Stillways”,Author=“Steve Bisley”},借来的书Id=2,DateBorrowed=DateTime.Parse(“01/04/2014”)},
新借阅图书{BookId=6,BorrowerId=4,DateBorrowed=DateTime.Parse(“08/04/2014”)},
新借阅的图书{BookId=2,BorrowerId=4,DateBorrowed=DateTime.Parse(“08/04/2014”)},
新借阅图书{BookId=1,BorrowerId=1,DateBorrowed=DateTime.Parse(“26/03/2014”)},
};
私有静态列表借款人=新列表
{
新借款人{Id=1,Firstname=“John”,Lastname=“Smith”},
新借款人{Id=2,Firstname=“Mary”,Lastname=“Jane”},
新借款人{Id=3,Firstname=“Peter”,Lastname=“Parker”},
新借款人{Id=4,Firstname=“Eddie”,Lastname=“Brock”},
};
公共静态列表书籍{get{return Books;}}
公共静态列表借阅图书{获取{返回借阅图书;}
公共静态列表借款人{get{return借款人;}}
}
公共类图书存储库:IBookRepository
{
公共IEnumerable搜索()
{
返回DataStore.Books.Where(b=>b.Author==“Pau