如何在继承的空应用程序中使用身份?
How to use Identity in a empty application with inheritance?
我有一个应用程序,我正在尝试使用继承和标识来控制它。
我有一个class人,Client和Chef继承了这个人的特点。
我创建了一个空的 MVC 应用程序,并且想使用 Identity。我上周研究了如何在一个空应用程序中实现身份,并且总是找到创建 MVC 个人帐户并将其用作基础的示例。由此我遇到了太多麻烦,有人可以帮助我吗?
不确定您在此处寻找的确切内容,但 Identity 的工作方式是您创建一个继承自 IdentityUser
的 class 并成为应用程序的用户对象:
public class ApplicationUser : IdentityUser
{
}
您可以使用您希望在应用程序中为用户存储的任何属性来扩展此 class。如果 Client 和 Chef 应该是系统的用户(您可以作为 client/chef 登录),那么他们应该从您的用户实体继承,ApplicationUser
这里。
public class Client : ApplicationUser
{
}
public class Chef : ApplicationUser
{
}
同样,您可以扩展那些 classes,但是您希望根据需要存储额外的信息。但是,请记住,继承层次结构将使用 STI(单 table 继承)进行持久化。换句话说,用户实体的所有属性和该用户实体的所有子classes 都将在同一个table 上。将添加一个鉴别器列以通知 Entity Framework 它应该用每一行的数据实例化什么 class 。实际上,这仅意味着您不能在 subclasses 上拥有不可为 null 的属性。例如,如果 Chef
有一个像 public string CulinarySchool { get; set; }
这样的 属性,你不能在实体上要求它,因为 Client
没有这个 属性,因此无法满足要求。不过,这只会影响您的实体 classes。您仍然可以创建一个视图模型,您需要此 属性 用于表单。
至于你的People
class,就看你想用这个做什么了。 C# 不支持多重继承,因此您唯一的选择是将 People
class 替换为 ApplicationUser
,基本上只需移动其所有属性,或者您可以使 People
ApplicationUser
的子 class,然后让 Client
和 Chef
像现在一样从它继承:
public class People : ApplicationUser
{
}
public class Client : People
{
}
public class Chef : People
{
}
如果实际上不应该有 People
的实例,您可以将其抽象化。
你是说 ASP.NET Identity 吗?这是相当新的。
我有一个应用程序,我正在尝试使用继承和标识来控制它。
我有一个class人,Client和Chef继承了这个人的特点。
我创建了一个空的 MVC 应用程序,并且想使用 Identity。我上周研究了如何在一个空应用程序中实现身份,并且总是找到创建 MVC 个人帐户并将其用作基础的示例。由此我遇到了太多麻烦,有人可以帮助我吗?
不确定您在此处寻找的确切内容,但 Identity 的工作方式是您创建一个继承自 IdentityUser
的 class 并成为应用程序的用户对象:
public class ApplicationUser : IdentityUser
{
}
您可以使用您希望在应用程序中为用户存储的任何属性来扩展此 class。如果 Client 和 Chef 应该是系统的用户(您可以作为 client/chef 登录),那么他们应该从您的用户实体继承,ApplicationUser
这里。
public class Client : ApplicationUser
{
}
public class Chef : ApplicationUser
{
}
同样,您可以扩展那些 classes,但是您希望根据需要存储额外的信息。但是,请记住,继承层次结构将使用 STI(单 table 继承)进行持久化。换句话说,用户实体的所有属性和该用户实体的所有子classes 都将在同一个table 上。将添加一个鉴别器列以通知 Entity Framework 它应该用每一行的数据实例化什么 class 。实际上,这仅意味着您不能在 subclasses 上拥有不可为 null 的属性。例如,如果 Chef
有一个像 public string CulinarySchool { get; set; }
这样的 属性,你不能在实体上要求它,因为 Client
没有这个 属性,因此无法满足要求。不过,这只会影响您的实体 classes。您仍然可以创建一个视图模型,您需要此 属性 用于表单。
至于你的People
class,就看你想用这个做什么了。 C# 不支持多重继承,因此您唯一的选择是将 People
class 替换为 ApplicationUser
,基本上只需移动其所有属性,或者您可以使 People
ApplicationUser
的子 class,然后让 Client
和 Chef
像现在一样从它继承:
public class People : ApplicationUser
{
}
public class Client : People
{
}
public class Chef : People
{
}
如果实际上不应该有 People
的实例,您可以将其抽象化。
你是说 ASP.NET Identity 吗?这是相当新的。