2011-02-16 77 views
1

我在我的应用程序中有以下的逻辑分离,你可以看到我有一个名为SimpleController的类,它用于导入和查找SimpleEntities。我的商业逻辑应该去哪里?

我将所有SimpleEntities读入内存列表因为我经常搜索这些实体,并且每当我想要搜索一个实体时从数据库中读取的速度会更快。

将SimpleEntities读入并存储到SimpleLogic类而不是SimpleController类中的逻辑会更好吗?

public class SimpleEntity 
{ 
    public int SimpleId { get; set; } 
    public string SimpleName { get; set; } 
} 

public class SimpleDAL 
{ 
    public ICollection<SimpleEntity> GetAllSimpleEntities() 
    { 
     //Retrieve SimpleEntities from Database 
    } 
    public void InsertSimpleEntity(SimpleEntity simpleEntity) 
    { 
     //Insert simple Entity into Database 
    } 
} 

public class SimpleLogic 
{ 
    private readonly SimpleDAL simpleDAL = new SimpleDAL(); 

    public ICollection<SimpleEntity> GetAllSimpleEntities() 
    { 
     return simpleDAL.GetAllSimpleEntities(); 
    } 
    public void InsertSimpleEntity(SimpleEntity simpleEntity) 
    { 
     //Validate simpleEntity before adding to database 
     if (simpleEntity.SimpleId <= 0) 
      throw new Exception("Invalid SimpleEntity Id: " + simpleEntity.SimpleId); 

     if (String.IsNullOrEmpty(simpleEntity.SimpleName)) 
      throw new Exception("SimpleEntity Name cannot be empty or null"); 

     simpleDAL.InsertSimpleEntity(simpleEntity); 
    } 
} 

public class SimpleController 
{ 
    private readonly SimpleLogic simpleLogic = new SimpleLogic(); 
    private List<SimpleEntity> simpleEntities; 

    public SimpleController() 
    { 
     simpleEntities = simpleLogic.GetAllSimpleEntities().ToList(); 
    } 

    public int FindSimpleIndex(int simpleId) 
    { 
     return simpleEntities.FindIndex(p=> p.SimpleId == simpleId); 
    } 

    public void ImportOtherSimpleEntity(OtherSimpleEntity otherSimpleEntity) 
    { 
     if (otherSimpleEntity.Operation == "Update") 
     { 
      int index = FindSimpleIndex(otherSimpleEntity.OtherSimpleId); 
      //If entity was found update SimpleEntity 
      if (index > -1) 
      { 
       //Call SimpleLogic.UpdateSimpleEntity(Pass in SimpleEntity); 
      } 
     } 
    } 
} 

回答

0

我想也许是实现一个SimpleEntityManager可以从控制器内引用,如有必要,可以在外面操作它。所以控制器处理系统的MVC方面,并且SimpleEntityManager管理SimpleEntities

顺便说一下,InsertSimpleEntity()似乎在SimpleEntity字段上执行验证。我通常宁愿SimpleEntity执行验证本身(最有可能在施工期间)。

+0

好吧,我同意SimpleEntityManager方面。我也关于如何将实体验证逻辑转移到它自己的实体中,但是然后逻辑类似乎没有真正的用途,它只是调用DAL并且似乎有点浪费。 – Jethro 2011-02-17 10:45:30

相关问题