我想创建一个特定的类来管理我的应用程序中的同事。
例如,我有一个商店,我有一个集合中的客户列表,在这个集合中我有一个客户是本月的客户,有些客户因某些原因获得折扣以获得折扣。我们来看看代码:
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
}
}
但在我的数据库中,我只有两张桌子。商店和客户。
我想要做的是为客户创建一个特定的集合,从Store中删除逻辑并放入一个特定的类,毕竟,我不认为逻辑属于这两个类。< / p>
我愿意这样:
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
}
是否可以创建此映射并仅保留数据库中的两个表?我想让它对应用程序透明。很抱歉代码问题,输入堆栈溢出并且没有检查语法。
答案 0 :(得分:2)
不需要为模型类创建业务逻辑。将您的逻辑分离到上一级。这是你的模型类。它会根据您的需要创建您的关系
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
}
创建存储库或服务层以应用特定的业务逻辑
public ICollection<Customer> GetDiscountCustomers()
{
return dbContext.Customers.where(c=>c.discount=true).ToList()
}
如果您想立即加载与客户的商店,您可以使用预先加载,
public ICollection<Store> GetAllStores()
{
return dbContext.Stores.Include("Customers").ToList()
}