2016-07-23 22 views
0

Ich habe eine Klasse ApplicationUser, die von IdentityUser abgeleitet ist. Ich verwende ApplicationUser-Klasse in Asp.Net Identity, um Mitgliedschaftstabellen zu erstellen. Ich habe alle mit der Mitgliedschaft verbundenen Funktionalitäten in einer DLL zusammengefasst.Entity Framework-Code Erstes abgeleitete Modell, das nicht als Navigationseigenschaft festgelegt wird

Jetzt in meinem anderen Projekt verwende ich diese DLL. In diesem Projekt verwende ich Code First, um die Datenbank zu generieren. Ich habe ein Modell wie dieses

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

nun zuerst in meinem Code DbContext ich die ApplicationUser als Navigationseigenschaft von der Gesellschaft Modell verwenden möchten.

Wie kann ich dies erreichen, ohne die ApplicationUser-Klasse in der separaten DLL zu berühren?

+0

[ForeignKey ("ApplicationUser")] string UserID {get; set;} ist dies Was willst du? –

+0

UserID ist der Fremdschlüssel, aber was ich will, ist die ApplicationUser-Entität als Navigationseigenschaft im Firmenmodell. So, wenn ich das Firmenobjekt bekomme, sollte ich in der Lage sein, zu der ApplicationUser-Entität zu navigieren. –

Antwort

0

Es gibt zwei Möglichkeiten, dies zu erreichen.

Zuerst mit 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;} 
} 

Zweitens Modellbauer in der Context-Klasse:

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