Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.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
.net 如何将实体与数据库模型分离?_.net_Oop_Separation Of Concerns_N Tier Architecture - Fatal编程技术网

.net 如何将实体与数据库模型分离?

.net 如何将实体与数据库模型分离?,.net,oop,separation-of-concerns,n-tier-architecture,.net,Oop,Separation Of Concerns,N Tier Architecture,我需要一些帮助来组织好我的数据模型。 我正在写一个应用程序,它将是一个简单的笔记本。我使用三层体系结构= 业务逻辑、数据逻辑、数据库访问。 我想使用标签系统,这样在应用程序中搜索信息就更容易了。这里有几个问题 -由于关注点分离,实体类和支持通过这些实体进行标记搜索的类必须不同。那么,最好的方法是什么——封装还是继承? -将实体类与检索并向数据库提供信息的类分开是一个好主意吗?如果是,它将是4个级别-实体类、数据库类、标记搜索帮助程序和BL类。这是一些非常一般的问题,所以我不能涵盖太多 一般来说,

我需要一些帮助来组织好我的数据模型。 我正在写一个应用程序,它将是一个简单的笔记本。我使用三层体系结构= 业务逻辑、数据逻辑、数据库访问。 我想使用标签系统,这样在应用程序中搜索信息就更容易了。这里有几个问题 -由于关注点分离,实体类和支持通过这些实体进行标记搜索的类必须不同。那么,最好的方法是什么——封装还是继承?
-将实体类与检索并向数据库提供信息的类分开是一个好主意吗?如果是,它将是4个级别-实体类、数据库类、标记搜索帮助程序和BL类。

这是一些非常一般的问题,所以我不能涵盖太多

一般来说,如果有疑问,避免继承。继承应该小心使用,真正的继承很少使用。接口和聚合通常更合适

我不明白你的标签搜索助手。标签是实体,标签的处理是业务逻辑。基于标记搜索实体可能会利用接口,这仍然是业务逻辑

检索数据库并向数据库提供信息的类是什么?你说的是数据访问层吗?我会寻找一些现有的图书馆或技术来访问数据库,适合您的需要。我使用的是NHibernate,但我认为这对你的应用程序来说是过分的。周围还有很多其他的产品


您需要根据系统的复杂性进行尽可能多的分离。我知道没什么帮助。

所以,最好在业务逻辑中处理标签搜索,而不是在数据层?好的,我明白了。你会对BL使用的这个DAL有一些疑问。这完全取决于技术,你如何以及是否可以对任何实体类型做这些通用的事情。