【发布时间】:2022-02-18 06:44:20
【问题描述】:
首先,这是我的课程:
public class Name
{
public int NameId {get;set;}
public string Value {get;set;}
[ForeignKey("Name_NameId")]
public ICollection<PersonName> PersonsName {get;set;}
}
public class NameType
{
public int NameTypeId {get;set;}
public string Value {get;set;}
[ForeignKey("NameType_NameTypeId")]
public ICollection<PersonName> PersonsName {get;set;}
}
public class Person
{
public int PersonId {get;set;}
public string Suffix {get;set;}
public datetime DateOfBirth {get;set;}
[ForeignKey("Person_PersonId")]
public ICollection<PersonName> PersonsName {get;set;}
}
public class PersonName
{
public int Person_PersonId {get;set;}
public int Name_NameId {get;set;}
public int NameType_NameTypeId {get;set;}
public int Order {get;set;}
}
理想情况下,在访问 Person 类时,我希望能够调用一个函数(或属性),该函数(或属性)可以从 PersonName 存储库中提取该人的全名。但是,我不太确定该怎么做。这些表中的数据示例:
NameId Value
1 John
2 Jacob
3 Jingleheimer
4 Schmidt
NameTypeId Value
1 First Name
2 Middle Name
3 Last Name
4 Nickname
PersonId Suffix DateOfBirth
1 01/01/1900
Person_PersonId Name_NameId NameType_NameTypeId Order
1 1 1 0
1 2 2 0
1 3 2 1
1 4 3 0
所以在 Person 类中,我希望有一个像 GetFullName()/FullName 这样的函数/属性,它将返回“John Jacomb Jingleheimer Schmidt”。我一直在从头开始学习一个教程,在制作完每个类之后,他们制作了一个接口、模拟存储库,并且正在开发一个数据库存储库。但是,我想通过视图模型将信息传递到视图中,但我不确定如何将类绑定到存储库等。有没有人可以指点我一个可以解释的教程最好还是为我拼出来?谢谢。
【问题讨论】:
-
你提到你正在学习一个教程——你能把我们链接到它吗?
-
@chakeda - 它在这里:app.pluralsight.com/library/courses/… 在那个教程中,他们没有做我上面想要完成的事情。当我完全按照该教程进行操作时,一切正常。我把它作为我想做的一些个人事情的开始。
-
这里是40 pitfalls about names。您的人应该只有一个可以为空的名称字段。也就是说,您正在采取数据库规范化的方式。如果您真的想走这条路,您的问题可能是
PersonName中缺少导航属性。然后,您可以从Person通过PersonName通过MissingNameNavigationProperty转到Value属性。 -
这种数据库设计很糟糕,除非您从事“名称”业务,这很常见。该名称不应有自己的表。
标签: asp.net-mvc asp.net-core ef-core-2.0