2017-02-09 16 views
0

Это мое первое сообщение, поэтому, пожалуйста, извините меня, если я не буду следовать правильной процедуре. Также обратите внимание, что я только начал изучать EF-Code First на этой неделе, поэтому я очень новичок в этом и не совсем понимаю все решения в stackoverflow.Таблица внешних ключей указывает на одну из двух таблиц

Проблема: У меня есть три класса: пользователь, арендатор и приборная панель.
Панель приборов может быть только для Пользователя или Арендатора. Другими словами, у пользователя есть панель инструментов, а арендатор имеет панель инструментов. Это всегда взаимно однозначное отношение между User и Dashboard. То же самое касается Tenant and Dashboard.

Как можно было бы создать эти отношения?

Я прочитал много методов аннотации данных, а также быстрые методы api, но я должен признать, что я все еще ошеломлен, как это сделать.

public class User 
{ 
    [Key] 
    public int ID { get; set; } 

    public int TenantId { get; set; } 
    public virtual Tenant Tenant { get; set; } 
} 

public class Tenant 
{ 
    [Key] 
    public int ID { get; set; } 
    public string Name { get; set; } 
} 

public class Dashboard 
{ 
    [Key] 
    public int DashboardId { get; set; } 
    public string Description { get; set; } 

} 
+0

Вы говорите, что пользователь имеет отношение один к одному с приборной панели. Но у вашего пользовательского класса есть свойство навигации для арендатора и ничего для панели управления –

+0

Да, это правда, это всего лишь пример двух класов. Я удалил аннотации данных, так как они не работали. Kinda надеялся, что я могу привести пример «незавершенных классов», а затем кто-то может помочь мне в том, как «заполнять их». Надеюсь, это имеет смысл. – SlapChip

+0

В вашем случае пользователь и арендатор будут иметь внешний ключ панели приборов. Учитывая, что данные таблиц таблиц были созданы до пользователей. – Pavvy

ответ

0

В следующих двух пользователей и арендаторов имеют единую панель

public class User 
{ 
    public int UserId {get; set;} 
    public virtual Dashboard Dashboard {get; set;} 
} 

public class Tenant 
{ 
    public int TenantId {get; set;} 
    public string Name {get; set;} 
    public virtual Dashboard Dashboard {get; set;} 
} 

public class Dashboard 
{ 
    public int DashboardId {get; set;} 
    public string Description {get; set;} 
} 
+0

Привет снова. Извините за медленный ответ. Только добрался до этого сегодня. Проблема заключается в добавлении переноса. Я получаю следующую ошибку: «Невозможно определить главный конец связи между типами« BOF365WebApp.Models.User »и« BOF365_Solution.Models.XC365Core.Dashboard.Dashboard ». этой ассоциации должны быть явно сконфигурированы с использованием либо свободного API API, либо аннотаций данных ». – SlapChip