C# 如何在业务实体上封装业务逻辑?

C# 如何在业务实体上封装业务逻辑?,c#,entity-framework,3-tier,C#,Entity Framework,3 Tier,在3层应用程序上,我使用我的业务实体在我的dbContext上生成dbset 在业务层: public class User { string name {get;set;} } 在数据层上: public context:DbContext { public DbSet<User> Users {get;set;} } 那么,我的问题是如何在实体上封装逻辑?我可以使用扩展方法,但我还需要一些属性,我不希望它们泄漏到域层之外。对于这种类型的体系结构,最好创建包含所有业

在3层应用程序上,我使用我的业务实体在我的dbContext上生成dbset

在业务层:

public class User
{ 
   string name {get;set;}
}
在数据层上:

public context:DbContext
{
  public DbSet<User> Users {get;set;}
}

那么,我的问题是如何在实体上封装逻辑?我可以使用扩展方法,但我还需要一些属性,我不希望它们泄漏到域层之外。

对于这种类型的体系结构,最好创建包含所有业务逻辑的交互器。这样,您的域模型(如User)可以非常轻量级

创建交互者有两种常见的方法。一种方法是创建服务对象。该服务可以提供所有用例并执行所有业务逻辑。这种方法更适用于简单的领域模型和中小型应用程序

服务交互者示例:

封装业务逻辑的另一种常见方法是为每个用例创建一个对象。无论何时添加新操作,只需创建一个新类。这需要更多的初始工作和对企业体系结构的更好理解,但会产生一个非常可扩展的解决方案

用例交互器示例:


对于这种类型的体系结构,最好创建包含所有业务逻辑的交互器。这样,您的域模型(如User)可以非常轻量级

创建交互者有两种常见的方法。一种方法是创建服务对象。该服务可以提供所有用例并执行所有业务逻辑。这种方法更适用于简单的领域模型和中小型应用程序

服务交互者示例:

封装业务逻辑的另一种常见方法是为每个用例创建一个对象。无论何时添加新操作,只需创建一个新类。这需要更多的初始工作和对企业体系结构的更好理解,但会产生一个非常可扩展的解决方案

用例交互器示例:

我正在使用我的业务实体在我的dbContext erm上生成DBSET。。。什么最好在代码中显示一个示例。这个问题永远不会只适用于文字。我正在使用我的业务实体在我的dbContext erm上生成DBSET。。。什么最好在代码中显示一个示例。这个问题永远不会只用文字来回答。
public class UserService
{
    public void ChangeUsername(User user, string name)
    {
        ... business logic ...
    }
}
public class ChangeUsernameOperation
{
    public void ChangeUsernameOperation(User user, string name)
    {
        ... business logic ...
    }
}