实体框架代码第一个派生模型未设置为导航属性

时间:2016-07-23 10:42:49

标签: entity-framework code-first dbcontext

我有一个派生自IdentityUser的ApplicationUser类。我在Asp.Net Identity中使用ApplicationUser类来创建成员资格表。我已将与成员资格相关的所有功能编译成DLL。

现在在我的另一个项目中我正在使用这个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作为公司模型的导航属性。

如何在不触及单独DLL中的ApplicationUser类的情况下实现此目的?

1 个答案:

答案 0 :(得分: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);
    }