Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.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
Entity framework 业务规则如何适应实体框架生成的实体?_Entity Framework - Fatal编程技术网

Entity framework 业务规则如何适应实体框架生成的实体?

Entity framework 业务规则如何适应实体框架生成的实体?,entity-framework,Entity Framework,假设我在.NET应用程序中使用传统的三层应用程序(UI-BLL-DAL),那么业务规则将在哪里引用生成的实体类?您会用一个分部类扩展实体并在那里添加规则,将实体向上传递到BLL映射到一个business对象,并在一个单独的类中处理规则,还是完全不同的东西?到目前为止,普遍的做法是什么 谢谢,不要将业务逻辑放在实体中。实体的存在是为了将DB接口映射到应用程序,因此 此外,将业务逻辑放在实体中会使它们变得臃肿和混乱。您将拥有一些用于DB映射的属性。其他表示运行时关注点的。有些方法可以在L2E查询中调

假设我在.NET应用程序中使用传统的三层应用程序(UI-BLL-DAL),那么业务规则将在哪里引用生成的实体类?您会用一个分部类扩展实体并在那里添加规则,将实体向上传递到BLL映射到一个business对象,并在一个单独的类中处理规则,还是完全不同的东西?到目前为止,普遍的做法是什么


谢谢,

不要将业务逻辑放在实体中。实体的存在是为了将DB接口映射到应用程序,因此

此外,将业务逻辑放在实体中会使它们变得臃肿和混乱。您将拥有一些用于DB映射的属性。其他表示运行时关注点的。有些方法可以在L2E查询中调用。有些你不能。一团糟。此外,它使您的业务逻辑深深地束缚在EF代码中,这是一种不好的关注点分离

我们为业务流程编写服务。每个服务都会为其所需的数据注入存储库。业务逻辑完全独立于EF映射关注点。它甚至可能不使用EF类型。例如,您可以编写如下代码:

var q = from l in Context.Animals.OfType<Lemur>()
        select new LemurDto
        {
            Id = l.Id,
            IsKing = l.Name.Equals("Julien XIII")
        };
var service = new LemurCountService(q);
return service.Inventory();
var q=来自Context.Animals.OfType()中的l
选择new Lemurdo
{
Id=l.Id,
IsKing=l.Name.Equals(“朱利安十三世”)
};
var服务=新的LemurCountService(q);
return service.Inventory();

因此,在这种情况下,
LemurCountService
完全独立于EF。

不要将业务逻辑放在实体中。实体的存在是为了将DB接口映射到应用程序,因此

此外,将业务逻辑放在实体中会使它们变得臃肿和混乱。您将拥有一些用于DB映射的属性。其他表示运行时关注点的。有些方法可以在L2E查询中调用。有些你不能。一团糟。此外,它使您的业务逻辑深深地束缚在EF代码中,这是一种不好的关注点分离

我们为业务流程编写服务。每个服务都会为其所需的数据注入存储库。业务逻辑完全独立于EF映射关注点。它甚至可能不使用EF类型。例如,您可以编写如下代码:

var q = from l in Context.Animals.OfType<Lemur>()
        select new LemurDto
        {
            Id = l.Id,
            IsKing = l.Name.Equals("Julien XIII")
        };
var service = new LemurCountService(q);
return service.Inventory();
var q=来自Context.Animals.OfType()中的l
选择new Lemurdo
{
Id=l.Id,
IsKing=l.Name.Equals(“朱利安十三世”)
};
var服务=新的LemurCountService(q);
return service.Inventory();

因此,在本例中,
LemurCountService
完全独立于EF.

Nice,那么在您的案例中,注入存储库的服务执行业务规则是否正确?同样对于数据绑定这样的东西:您的业务对象是否会从实体映射到某些属性,然后再反过来绑定到该实体,还是直接绑定到该实体?关于服务,这是正确的。不,我不绑定到实体。完美,完美,完美!这正是我想要的。与在DDD的应用程序服务层中创建从域对象映射的表示视图非常相似。顺便说一句,这篇文章很好,谢谢你的帮助。很好,那么在你的例子中,注入存储库的服务执行的业务规则正确吗?同样对于数据绑定这样的东西:您的业务对象是否会从实体映射到某些属性,然后再反过来绑定到该实体,还是直接绑定到该实体?关于服务,这是正确的。不,我不绑定到实体。完美,完美,完美!这正是我想要的。与在DDD的应用程序服务层中创建从域对象映射的表示视图非常相似。顺便说一句,这篇文章很好,谢谢你的帮助。