Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我的业务逻辑应该走到哪里?_C#_.net_Business Logic - Fatal编程技术网

C# 我的业务逻辑应该走到哪里?

C# 我的业务逻辑应该走到哪里?,c#,.net,business-logic,C#,.net,Business Logic,在我的应用程序中,我有以下独立的逻辑,正如您所看到的,我有一个名为SimpleControl的类,它是我用来导入和查找SimpleEntities的 我把所有的simplentities都读到了内存列表中,因为我经常搜索这些实体,而且每次我想搜索实体时,都比从数据库中读取要快得多 将读取SimpleEntities并将其存储到内存中的逻辑移到SimpleLogic类而不是SimpleControl类中会更好吗 public class SimpleEntity { public int

在我的应用程序中,我有以下独立的逻辑,正如您所看到的,我有一个名为SimpleControl的类,它是我用来导入和查找SimpleEntities的

我把所有的simplentities都读到了内存列表中,因为我经常搜索这些实体,而且每次我想搜索实体时,都比从数据库中读取要快得多

将读取SimpleEntities并将其存储到内存中的逻辑移到SimpleLogic类而不是SimpleControl类中会更好吗

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,似乎有点浪费。