实体框架代码第一种方法中的2个外键

时间:2014-07-21 06:51:00

标签: asp.net asp.net-mvc entity-framework asp.net-identity

我正在MVC 5,Visual Studio 2013,EF 6(Code First Approach)中创建一个应用程序。我已经实现了身份并且工作正常。现在我想创建一个表,其中我需要2个外键关系 - 一个来自dbo.AspNetUsers,另一个来自第二个表(让我们将它命名为Table2)。

在我的IdentityModel.cs中,我有以下代码:

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
    public DbSet<Table2> Table2 { get; set; }

    public ApplicationDbContext() : base("ConnectionString", throwIfV1Schema: false)
    {
    }

    public static ApplicationDbContext Create()
    {
        return new ApplicationDbContext();
    }
}

这是我的表2:

[Key]
[Display(Name = "ID")]
public int ID { get; set; }

[Required]
[StringLength(200, MinimumLength = 10)]
[Display(Name = "Col1")]
public string Col1{ get; set; }

[Required]
[StringLength(4000, MinimumLength = 10)]
[Display(Name = "Col2")]
public string Col2 { get; set; }

现在,我需要创建一个表(NewTable),其中有2个外键 - UserID(来自dbo.AspNetUsers)和另一个来自Table2。

谁能告诉我怎么做?我用Google搜索了它,但未能找到任何令人满意的答案。

1 个答案:

答案 0 :(得分:0)

很简单,只需创建一个Navigation属性即可。

示例:

public virtual ApplicationUser User { get; set; }

修改

我建议合并两个DB Context。从长远来看,它将避免许多问题。例如:

public class MyDbContext : IdentityDbContext<ApplicationUser>
    {
        public MyDbContext () : base("DbConn",false) {

        }

        public MyDbContext (string connectionString):base(connectionString,false)
        {

        }
        public DbSet<Table1> MyTable1{ get; set; }
        public DbSet<Table2> MyTable2{ get; set; }
   }