2015-03-04 2 views
1

Почему я получаю двойной из столбцов, как показано на рисунке:Почему я получаю двойную колонку в EF?

enter image description here

Как я могу получить эти столбцы объединены в одну колонку вместо 2-х колонок?

public class User 
{ 
    [Key] 
    public long id { get; set; } 
} 

public class Woman : User 
{ 
    public Woman() 
    { 
     s = new SharedManWoman(); 
     Clone = new Clone.CWoman(); 
    } 

    public Clone.CWoman Clone { get; set; } 
    public SharedManWoman s { get; set; } 
} 

public class Man : User 
{ 
    public Man() 
    { 
     s = new SharedManWoman(); 
     Clone = new Clone.CMan(); 
    } 

    public Clone.CMan Clone { get; set; } 
    public SharedManWoman s { get; set; } 
} 

public class SharedManWoman 
{ 
    [Key] 
    public long tableId { get; set; } 
} 

public class CUser 
{ 
    [Key] 
    public long id { get; set; } 
} 

public class CWoman : CUser {} 

public class CMan : CUser {} 
+0

Как определяется «Clone»? –

+0

Я добавил, пожалуйста, посмотрите еще раз – user4515101

+0

@RufusL Clone - это имя свойства, оно определено CWoman и CMan. – AaronLS

ответ

0

Оба они определены в отдельных производных классах, и так как они являются навигационными свойствами, они создают внешний ключ для каждого:

public Clone.CWoman Clone { get; set; } 

public Clone.CMan Clone { get; set; } 

Вы можете переместить их до базового класса, а и устранить CWoman/CMAN, вместо того, чтобы сделать его типа CUser:

public class User 
{ 
    [Key] 
    public long id { get; set; } 
    public Clone.CUser Clone { get; set; } 

} 

это должно избавиться от одного из дублирующих FK, но не уверен, если это решение вписывается в то, что вы пытаетесь для достижения.

Смежные вопросы