我需要在三个实体之间建立关系Party
- Organization Party
- Person
但是,有一次,Party将成为组织或人员,如下所示。
conditionalRelations: {
PartyTypeCode: {
"1": { entity: "Person" },
"2": { entity: "Organization" }
}
}
如果派对类型为1,则关系将为Party ->Person
如果派对类型为2,那么关系将为Party-> Organization
。
我需要在ASP.NET
MVC4 scaffolding
中配置此关系。(实体框架代码优先)
答案 0 :(得分:0)
自从我执行EF Code First以来已经有一段时间了,但我相信这应该(或多或少)做到这一点(假设它是你想要制作的新数据库):
abstract class Party {
int Field1 {get;set;}
int Field2 {get;set;}
virtual ICollection<PartyType1Party> Parties {get;}
}
class Person {
string Name {get;set;}
int Age {get;set;}
}
class OrganizationParty {
int Something {get;set;}
int OtherThing {get;set;}
virtual ICollection<PartyType2Party> Parties {get;}
}
class PartyType1Party : Party {
Person OrganizerOrSomeRandomPropertyName {get;set;}
}
class PartyType2Party : Party {
OrganizationPart Organization {get;set;}
}
class Context : DbContext {
DbSet<Party> Parties {get;set;}
DbSet<Person> Persons {get;set;}
DbSet<OrganizationParty> OrganizationParties {get;set;}
}
不是手动跟踪哪一方是类型1和类型2,而是让EF为您处理(通过您正在处理的类)。如果你已经拥有一个现有的数据库,并且需要遵循它的scheem,那么我不知道如何解决它(虽然我做了类似的事情,我不记得如何)。