【问题标题】:How to make relationship between tables in asp.net mvc?如何在asp.net mvc中建立表之间的关系?
【发布时间】:2019-06-06 07:37:06
【问题描述】:

我在项目中使用“AspIdentity”。在项目中“AspIdentity”的所有标准模型 和一个模型“邮政”。我希望每个帖子都有它的 ApplicationUser 并且每个 ApplicationUser 都有自己的帖子集合。并且已经有一个数据库,其中有一个存储用户信息的表。

我尝试独立创建表、数据上下文和数据库,但我没有找到任何信息,但我没有找到与我的案例相关的信息。

后模型:

public class Post
{
    public int Id { get; set; }
    public string Body { get; set; }
    public string ApplicationUserId { get; set; }
    public ApplicationUser ApplicationUser { get; set; }
}

ApplicationUser 模型:

public class ApplicationUser : IdentityUser
{
    public int Year { get; set; }
    public virtual ICollection<Post> Posts { get; set; }
    public ApplicationUser()
    {
        Posts = new List<Post>();
    }
}

我希望看到响应中的数据上下文和用于创建帖子表的查询。

【问题讨论】:

  • 重点是它们被映射到的 DbContext 中。如果您有单独的 BlogContext 和 ApplicationContext ,那么我认为 EF 不会让您映射它。即使 SQL 没有问题(跨数据库)。

标签: c# asp.net sql-server model-view-controller


【解决方案1】:

您需要覆盖 DbContext 类(可能是 ApplicationDbContext)中的 OnModelCreating 方法。在被覆盖的方法中,建立类之间的关系。以下是应该可以解决您的问题的示例代码:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    base.OnModelCreating(modelBuilder);
    modelBuilder.Entity<ApplicationUser>()
                .HasMany(e => e.Posts)
                .WithRequired(e => e.ApplicationUser)
                .HasForeignKey(e => e.ApplicationUserId)
                .WillCascadeOnDelete(false);
}

【讨论】:

    猜你喜欢
    • 2023-03-18
    • 2017-07-09
    • 1970-01-01
    • 2020-01-17
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 2019-01-03
    • 1970-01-01
    相关资源
    最近更新 更多