2016-07-23 4 views
0

У меня есть класс ApplicationUser, полученный из IdentityUser. Я использую класс ApplicationUser в Asp.Net Identity для создания таблиц членства. Я сохранил все функции, связанные с членством, скомпилированным в DLL.Entity Framework Code Первая производная модель, которая не устанавливается в качестве свойства навигации

Теперь в моем другом проекте я использую эту DLL. В этом проекте я использую Code First для создания базы данных. У меня есть модель, как этот

class Company 
{ 
int CompanyID{get;set;} 
string UserID {get;set;} //Foreign Key to the ApplicationUser "Id" column 
virtual ApplicationUser {get;set;} 
} 

Сейчас в моем коде первого DbContext я хочу использовать ApplicationUser в качестве свойства навигации от модели компании.

Как достичь этого, не касаясь класса ApplicationUser в отдельной DLL?

+0

[ForeignKey ("ApplicationUser")] строка UserID {получить, установить;} это ты хочешь? –

+0

UserID - это внешний ключ, но я хочу, чтобы объект ApplicationUser был навигационным свойством в модели компании. Так что, когда я получаю объект компании, я должен иметь возможность перейти к объекту ApplicationUser. –

ответ

0

Существует два способа достичь этого.

Во-первых, с помощью DataAnnotations:

using System.ComponentModel.DataAnnotations.Schema; 
class Company 
{ 
    public int CompanyID{get;set;} 
    public string UserID {get;set;} 
    [ForeignKey("UserID ")]//Tells to EF that UserId is corresponds to this navigation prop 
    public virtual ApplicationUser ApplicationUser{get;set;} 
} 

Во-вторых, с использованием модели строитель в Context классе:

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     modelBuilder.Entity<Company>().HasRequired(x => x.ApplicationUser) 
        .WithMany().HasForeignKey(x => x.UserID); 
    } 

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

  • Нет связанных вопросов^_^