0

我需要在三个实体之间建立关系Party--Organization PartyPerson

但有一次,Party 将是如下组织或个人。

conditionalRelations: {    
    PartyTypeCode: {
        "1": { entity: "Person" },
        "2": { entity: "Organization" }
      }
}

如果派对类型为 1,则关系将为Party ->Person
如果派对类型为 2,则关系将为Party-> Organization

我需要在ASP.NET MVC4 scaffolding.(Entity Framework Code First)中配置这个关系

4

1 回答 1

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 为您处理此问题(通过您正在处理的类)。如果您已经有一个现有的数据库并且需要遵循它的计划,那么我不知道如何解决它(虽然我前一段时间做过类似的事情,但我不记得是如何解决的)。

于 2013-07-18T10:36:06.573 回答