LINQ to entities translates LINQ queries into SQL queries which are then sent and executed in the database (server). That's why you get the exception that your
get_purchases method cannot be translated into store expression (SQL).
To get books that were paid more than 90 you can use LINQ Join operator:
var books = from b in dBContext.Books join p in dBContext.Purchases on b.isbn equals p.isbn where p.price > 90 select b;
Here is a great LINQ resource: LINQ 101
If you want to have EF-like navigation properties like
Book.Purchases where there is no actual relation in the database, you'd have to create your own data repository layer that would be initialized with the
DbContext which would be used in all properties and methods. Then you would be using that for all data access - i.e. you'd never use
DbContext directly in your code. This is a good practice on larger projects, especially if you need to implement some business rules and data manipulation before it gets stored in the database. Look up "repository pattern" and you're sure to find many resources.