C# 我的业务逻辑应该走到哪里?
在我的应用程序中,我有以下独立的逻辑,正如您所看到的,我有一个名为SimpleControl的类,它是我用来导入和查找SimpleEntities的 我把所有的simplentities都读到了内存列表中,因为我经常搜索这些实体,而且每次我想搜索实体时,都比从数据库中读取要快得多 将读取SimpleEntities并将其存储到内存中的逻辑移到SimpleLogic类而不是SimpleControl类中会更好吗C# 我的业务逻辑应该走到哪里?,c#,.net,business-logic,C#,.net,Business Logic,在我的应用程序中,我有以下独立的逻辑,正如您所看到的,我有一个名为SimpleControl的类,它是我用来导入和查找SimpleEntities的 我把所有的simplentities都读到了内存列表中,因为我经常搜索这些实体,而且每次我想搜索实体时,都比从数据库中读取要快得多 将读取SimpleEntities并将其存储到内存中的逻辑移到SimpleLogic类而不是SimpleControl类中会更好吗 public class SimpleEntity { public int
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);
}
}
}
}
我可能会实现一个SimpleEntityManager,它可以从控制器内部引用,必要时可以在控制器外部操作。因此,控制器处理系统的MVC方面,SimpleEntityManager管理SimpleEntity
另外,InsertSimpleEntity似乎正在SimpleEntity字段上执行验证。我通常更希望SimpleEntity在构建过程中执行验证 好的,我同意SimpleEntityManager的观点。我也考虑过将实体验证逻辑移动到实体it本身中,但是逻辑类似乎没有真正的用途,它只是调用DAL,似乎有点浪费。