如何设置导航性能 [英] How to setup with navigation properties

查看:110
本文介绍了如何设置导航性能的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想成立MVC4一个简单的库应用程序

I am trying to set up a simple library application in 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; }

}

我已经安装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);
        }
    }

我如何的属性联系在一起?即我BorrowerRepository搜索方法,它返回的所有数据,但账面价值仅仅是一个ID,我如何与价值观链接它从书资料库?

How do I link the properties together? ie in my BorrowerRepository search method, it return all the data, but the Book value is just an ID, how do I link it with the values from the book repository?

已设置我的导航属性错了吗?或者是我已经设置了我的仓库数据的方式?

have I set up my navigation property wrong? or is it the way I have set up my Repository data?

推荐答案

一个实现这一方法是添加一个静态类来保存你的数据的集合在内存中。
然后在每个版本库的委派在数据存储相关的操作,适当的集合的任何数据,你可以使用的LINQ 做你的查询。

One way to achieve that is to add a static class to hold collections of your data in memory. Then in each of your repositories you delegate any data related operation to the appropriate collections in the data store and you can use Linq to do your queries.

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

这篇关于如何设置导航性能的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆