我有一个问题,我不知道最佳解决方案。希望这里有人可以提供帮助=)
我要解决的问题:我们必须在系统、人员和组织中定义用户类型。我想为两者共享一个登录表(即用户可能不知道他们是哪种类型的用户,它们只与用户名和密码有关)。所以我为用户名和密码创建了一个登录表。但我需要知道登录连接到谁,所以我需要对个人或组织的引用。
考虑以下类(简化):
public class Login
{
public string Username {get; set;}
public string Password {get;set;}
}
public class LoginPerson : Login
{
public Person Person {get;set;}
}
public class LoginOrg : Login
{
public Organization Organization {get;set;}
}
public class Person
{
public LoginPerson LoginPerson {get;set;}
//Lots of other properties. Removed for simplicity
}
public class Organization
{
public LoginOrg LoginOrg {get;set;}
//Lots of other properties. Removed for simplicity
}
人员配置设置如下:
public class PersonConfiguration : EntityTypeConfiguration<Person>
{
public PersonConfiguration()
{
HasRequired(p => p.LoginPerson).WithRequiredPrincipal(p => p.Person);
}
}
首先,这是行不通的。我收到一个异常说“System.Data.EntityCommandCompilationException:System.Data.EntityCommandCompilationException:准备命令定义时发生错误。有关详细信息,请参阅内部异常。---> System.Collections.Generic.KeyNotFoundException:给定的键是字典中没有……”所以我的第一个问题是为什么这不起作用?我的第二个问题是:哪种策略最适合这种继承?TPT、TPH 还是 TPC?