與實體框架6的工作,我有一個Person類多關係......實體框架許多對同一實體類型,但具有不同的關係類型
public class Person
{
public int ID { get; set; }
public string Name { get; set; }
public virtual ICollection<Relationship> Relationships { get; set; }
}
和關係類
public class Relationship
{
public int ID { get; set; }
public RelationshipType DependencyType { get; set; }
[ForeignKey("Person")]
public int PersonID { get; set; }
public virtual Person Person { get; set; }
public virtual ICollection<Person> RelatedPersons { get; set; }
}
我想要表示的是,例如,我可能將兄弟姐妹作爲關係類型,將UnclesAndAunts作爲另一種關係類型,並保存這些類型的關係,而無需知道父母是誰,因爲他們可能不在數據庫中。
隨着代碼首先,這將產生的表模式...
CREATE TABLE [dbo].[Person](
[ID] [int] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](max) NULL,
[Relationship_ID] [int] NULL)
和
CREATE TABLE [dbo].[Relationship](
[ID] [int] IDENTITY(1,1) NOT NULL,
[RelationshipType] [int] NOT NULL,
[PersonID] [int] NOT NULL,
[Person_ID] [int] NULL)
PersonID is the main Person of this relationship.
Person_ID is the Person to whom the main person is related to.
I would see the Relationship table containing repeated PersonID data.
的問題,這是因爲Relationship_ID的Person表中,這是說, Person表將具有重複的數據,而我希望關係表具有重複的數據,例如
Relationship...
ID RelationshipType PersonID Person_ID
---------------------------------------------
1 Sibling 1 2
2 Sibling 1 3
3 UnclesAndAunts 1 4
有人能告訴我應該如何用Model Classes來表示這個,我假設有一些屬性或其他需要包含的屬性。
感謝
絕對沒錯,我只是把關係弄錯了,最後得到了一個解決方案,與你所建議的一致。唯一的區別是,爲了完整性,我添加了第二個ICollection虛擬屬性,其InverseProperty爲「RelatedPerson」。另外,我沒有去Fluent API路由,我只是將RelatedId和RelatedPersonId設置爲空(int?),從而解決了級聯問題。謝謝。 – Hoots