Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.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中继承存储库吗#_C# - Fatal编程技术网

C# 我们可以在另一个存储库c中继承存储库吗#

C# 我们可以在另一个存储库c中继承存储库吗#,c#,C#,我不熟悉存储库模式,并尝试在我的项目中使用它。我的项目中有以下实体: 用户配置文件 用户类型 用户类型B 用户类型 我有3种类型的用户和UserProfile,其中包含关于这三种用户的一般信息,如密码、用户名等。还有许多其他实体,每种类型的用户与其他实体有不同类型的关系。现在,我决定为此创建以下存储库模式: public class UserProfileRepository { .... } public class UserTypeAReository: UserProfileRep

我不熟悉存储库模式,并尝试在我的项目中使用它。我的项目中有以下实体:

  • 用户配置文件
  • 用户类型
  • 用户类型B
  • 用户类型
我有3种类型的用户和UserProfile,其中包含关于这三种用户的一般信息,如密码、用户名等。还有许多其他实体,每种类型的用户与其他实体有不同类型的关系。现在,我决定为此创建以下存储库模式:

public class UserProfileRepository
{
 ....
}

public class UserTypeAReository: UserProfileRepository
{
 .....
}

public class UserTypeBReository: UserProfileRepository
{
 .....
}

public class UserTypeCReository: UserProfileRepository
{
 .....
}
所以我想知道这(存储库继承)是在良好的实践中实现的,还是有其他更好的方法来实现这一点

编辑


有一个1到0..1的共享主键关系b/w UserProfile和(UserTypeA、UserTypeB和UserTypeC)。

根据您试图实现的目标,您还可以使用
接口
抽象类

如果您希望所有类都有一个公共契约,但每个方法的实现都不同,那么您可以使用
接口
,这将提供更大的灵活性,因为您有多接口继承v的单类继承,使用
C

使用
抽象类
,可以设置方法和实现,但允许派生类重写基本实现


这篇文章也可能有帮助:

是的,这很好。特别是因为您将UserProfile的属性存储在一个单独的表中,所以这可以保持干燥。尽管在注释中问这个问题可能更好:没有必要在每个类名中指定“Repository”,您应该只在有用的地方使用模式,不要将自己锁定在一个模式中。如果您的用户类型是disjunkt,我会选择继承,并让ef处理所有必要的事情。如果不是的话,你的方法看起来不错。也看看这个