如何使两个表之间的两个关系? [英] How to make two relations between two tables?

查看:114
本文介绍了如何使两个表之间的两个关系?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个文章具有作者与用户表改性剂。下面是模式:

I have an Article that have a creator and a modifier from User table. Here is the model:

public class Article
{
    public int ArticleId { get; set; }
    public string Name { get; set; }
    public int UserId { get; set; }
    public int ModifierId { get; set; }
    public virtual User User { get; set; }
    public virtual User Modifier { get; set; }
}

这里是用户模型:

public class User
{
    public int UserId { get; set; }
    public string Username { get; set; }
    public string Password { get; set; }
    public string Name { get; set; }
    public bool IsActive { get; set; }
    public virtual List<Article> Articles { get; set; }
}

和我已经试过这样:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
        modelBuilder.Entity<Article>().HasRequired(c => c.User).WithMany(u => u.Articles).HasForeignKey(c => c.UserId);
        modelBuilder.Entity<Article>().HasRequired(c => c.Modifier).WithMany(u => u.Articles).HasForeignKey(c => c.ModifierId);
        Database.SetInitializer<Context>(null);
        base.OnModelCreating(modelBuilder);
        modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}

但错误是:

指定的模式是无效的。错误:关系
  Portal.Infrastructure.Repository.Article_User没有加载,因为
  类型'Portal.Infrastructure.Repository.User'是不可用的。

Schema specified is not valid. Errors: The relationship 'Portal.Infrastructure.Repository.Article_User' was not loaded because the type 'Portal.Infrastructure.Repository.User' is not available.

我使用EF6 code-第一和.net4.5

I am using ef6 code-first and .net4.5

推荐答案

试试这个code:

public class Article
{
public int ArticleId { get; set; }
public string Name { get; set; }
public int UserId { get; set; }
public int ModifierId { get; set; }

[InverseProperty("UserArticles")]
[ForeignKey("UserId")]
public virtual User User { get; set; }

[InverseProperty("ModifierArticles")]
[ForeignKey("ModifierId")]
public virtual User Modifier { get; set; }
}


public class User
{
public int UserId { get; set; }
public string Username { get; set; }
public string Password { get; set; }
public string Name { get; set; }
public bool IsActive { get; set; }

[InverseProperty("User")]
public virtual List<Article> UserArticles { get; set; }

[InverseProperty("Modifier")]
public virtual List<Article> ModifierArticles { get; set; }
}

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Article>().HasRequired(c => c.User).WithMany(u => u.UserArticles).HasForeignKey(c => c.UserId).WillCascadeOnDelete(false);
        modelBuilder.Entity<Article>().HasRequired(c => c.Modifier).WithMany(u => u.ModifierArticles).HasForeignKey(c => c.ModifierId).WillCascadeOnDelete(false);

      .
      .
      .
      .
    }

这篇关于如何使两个表之间的两个关系?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆