开发者

How to create a specific class for a collection in EF?

开发者 https://www.devze.com 2023-03-30 17:19 出处:网络
I want to create a specific class to manage a collegion in my application. For example, I have a Store and I have a list of customers in a collection, in this collection I have a customer that is the

I want to create a specific class to manage a collegion in my application.

For example, I have a Store and I have a list of customers in a collection, in this collection I have a customer that is the customer of the month, and some customers that got a prize to get a discount for some reason. Let's get to the code:

public class Store {
    public ICollection<Customer> Customers { get; set; }

    public Customer CustomerOfTheMonth 
    {
        //get and set for customer of the month
    }
    public ICollection<Customer> DiscountCustomers 
    {
        //get and set for customer of the month
    }
    public ICollection<Customer> GetAllCustomers 
    {
        //get and set for customer of the month
    }
}

But in my database, I only have two tables. Store, and Customer.

What I want to do is create a specific collection for the customer, to remove the logic from the Store and put in a specific class, after all, I don't feel th开发者_StackOverflow社区at the logic belongs to neither of those classes.

I wans tomething like this:

public class Store {
    internal CustomerCollection Customers { get; set; }

    //get and set for the propertis, just delegating for the collection
}        

public class CustomerCollection {
    public ICollection<Customer> Customers { get; set; }

    public ICollection<Customer> DiscountCustomers 
    {
        //get and set for customer of the month
    }

    //get and set with logic to filter the collection
}

Is there away to create this mapping and keep with only two tables in the database? I want to make it transparent to the application. Sorry for the code problems, typed in stack overflow and didn't check the syntax.


don't need to create your business logic to your model classes. Separate your logic to upper level. Here are your model classes. It will create your relationships as you want

public class Store {
        public vertual ICollection<Customer> Customers { get; set; }

        //get and set for other propertis
    } 



public class Customer{

    //get and set for other propertis
}

Create a repository or service layer to apply specific business logic ,

 public ICollection<Customer> GetDiscountCustomers() 
    {
       return dbContext.Customers.where(c=>c.discount=true).ToList()
    }

if you want to load stores with customers at once you can use eager loading,

public ICollection<Store> GetAllStores() 
        {
           return dbContext.Stores.Include("Customers").ToList()
        }
0

精彩评论

暂无评论...
验证码 换一张
取 消