Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在asp.net核心3中创建和播种多到多的关系

在asp.net核心3中创建和播种多到多的关系
EN

Stack Overflow用户
提问于 2020-04-21 01:22:39
回答 2查看 162关注 0票数 0

我想用asp.net核心3.1构建一个项目,我想在身份用户和另一个表(Book)之间建立多到多的关系,我有两个表: AspNetUsers(ApplicationUser)和book:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class ApplicationUser : IdentityUser // It's identity user
{
    ...

    public ICollection<UserBooks> UserBooks { get; set; }
}

书籍:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class Book
{
    [Required]
    public int Id { get; set; }

    public string Name { get; set; }

    public ICollection<UserBooks> UserBooks { get; set; }
}

关系的UserBooks:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class UserBooks
{
    public string UserId { get; set; }

    public ApplicationUser User { get; set; }

    public int BookId { get; set; }

    public Book Book { get; set; }
}

现在,我想为db种子并创建init数据(用户和书籍):

用户:

  • 电子邮件: user1@test.com >这个用户应该有2本书
  • 电子邮件: user2@test.com >这个用户应该有书1

图书:

  • Id : 1,名称:"B1“>这本书应该有2个用户
  • Id: 2,名称:"B2”>这本书应该有用户1

有一些关于种子的主题,但我不知道如何为其他表和身份用户表提供多到多的关系。

我应该如何为用户、书籍和UserBooks ??播撒种子?

EN

回答 2

Stack Overflow用户

发布于 2020-04-21 01:37:03

首先,用所需的数据填充图书和用户。(如果您想要进行大量的测试,可以在插入后使用GO 25000,它将运行25000次),然后填充UserBooks。如果需要特定的关系,或者在both循环中随机获取图书和用户ids范围内两个字段的随机ids,则可以手动完成此操作。您还可以在脚本之后使用GO <>,它将多次运行它。

票数 0
EN

Stack Overflow用户

发布于 2020-04-22 00:42:44

我创建ApplicationDbInitializer类并从startup.cs调用它

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ApplicationDbInitializer.Seed(userManager, roleManager, context);

ApplicationDbInitializer:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public static class ApplicationDbInitializer
{
    public static void Seed(
        UserManager<ApplicationUser> userManager,
        RoleManager<IdentityRole> roleManager,
        ApplicationDbContext context)
    {
        var roleName = "admin";

        roleManager.CreateAsync(new IdentityRole
        {
            Name = roleName,
            NormalizedName = roleName.ToUpper()
        }).Wait();

        if (userManager.FindByEmailAsync("b@b.com").Result == null)
        {
            var user = new ApplicationUser
            {
                UserName = "b@b.com",
                Email = "b@b.com"
            };

            if (userManager.CreateAsync(user, "@Aa123456").Result.Succeeded)
                userManager.AddToRoleAsync(user, roleName).Wait();
        }

        context.SaveChanges();

        context.Books.AddRange(
            new List<Book> {
                new Book{ Name="B1" },
                new Book{ Name="B2" },
            });

        context.SaveChanges();

        var userIdOfB = context.Users.FirstOrDefault(u => u.Email == "b@b.com").Id;
        var bookId1 = context.Books.FirstOrDefault(c => c.Name == "B1").Id;
        var bookId2 = context.Books.FirstOrDefault(c => c.Name == "B2").Id;

        context.UserBooks.AddRange(new List<UserBooks>
        {
            new UserBooks{ BookId = bookId1 , UserId = userIdOfB },
            new UserBooks{ BookId = bookId2 , UserId = userIdOfB }
        });

        context.SaveChanges();
    }
}

它工作正常,所有数据保存在使用关系创建的db和UserBooks表中,但是当我想获得UserBooks时,它是空的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var res = _context.Users.FirstOrDefault(u => u.Email == "b@b.com").UserBooks;

,有人能帮我吗?为什么res是空的??

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61340087

复制
相关文章
python Tkinter按钮带参数
from Tkinter import * def cross(value):     text.insert(INSERT,'x') window =Tk() frame =Frame(window) frame.pack() text =Text(frame,height =3,width =10) text.pack() button=Button(frame,text="add",command = lambda:cross(text)) button.pack() window.mainl
py3study
2020/01/09
1.6K0
java:如何让程序按要求自行重启?
正文开始前的废话: 这里的程序即包括b/s的web application,也包括standalone的类c/s的java application。 为什么要自我重启? 场景1:分布式环境中,一般会有很多应用(即包括c/s的java application,又有b/s的web application)部署在不同的环境中,为了管理方便,通常会把一些公用的配置,比如:报警发邮件用的邮箱账号/密码/smtp信息,公用的ftp账号信息,甚至jdbc的连接串信息等,统一放在某个位置(共享的网络存储目录、redis缓存
菩提树下的杨过
2018/01/18
2.8K0
java:如何让程序按要求自行重启?
正文开始前的废话: 这里的程序即包括b/s的web application,也包括standalone的类c/s的java application。 为什么要自我重启? 场景1:分布式环境中,一般会有很多应用(即包括c/s的java application,又有b/s的web application)部署在不同的环境中,为了管理方便,通常会把一些公用的配置,比如:报警发邮件用的邮箱账号/密码/smtp信息,公用的ftp账号信息,甚至jdbc的连接串信息等,统一放在某个位置(共享的网络存储目录、redis缓存
菩提树下的杨过
2018/01/18
1.4K0
python开发_tkinter_单选按钮
E | hongtenzone@foxmail.com  B | http://www.cnblogs.com/hongten
Hongten
2018/09/13
1.5K0
python开发_tkinter_单选按钮
Python+tkinter动态创建与销毁组件小案例
本文代码演示了如何在tkinter窗体上动态创建组件以及销毁组件的方法。 import tkinter import tkinter.messagebox import tkinter.simpledialog btnList = [] # 动态创建组件,并计算组件在窗体上的位置 def place(n): for i in range(n): exec('btn'+str(i)+'=tkinter.Button(root,text='+str(i)+')') eval('btn'+str(i)).p
Python小屋屋主
2018/04/16
5.2K0
Python+tkinter动态创建与销毁组件小案例
对抗蠕虫 —— 如何让按钮不被 JS 自动点击
作者: EtherDream www.cnblogs.com/index-html/p/anti_xss_worm.html 前言 XSS 自动点按钮有什么危害? 在社交网络里,很多操作都是通过点击按钮发起的,例如发表留言。假如留言系统有 XSS,用户中招后除了基本攻击外,还能进行传播 —— XSS 自动填入留言内容,并模拟点击发表按钮,于是就能发布带有恶意代码的留言。好友看了中招后,又传播给他们的好友。。。从而形成蠕虫扩散。 那么有没有一种机制,让「发表留言」必须通过用户的「真实点击」按钮才能完成,而无
前端教程
2018/03/05
9.2K0
对抗蠕虫 —— 如何让按钮不被 JS 自动点击
python的tkinter编程(十)Radiobutton单选按钮,CheckButton复选按钮 的详细解读
Radiobutton单选按钮 CheckButton复选按钮
一写代码就开心
2020/11/20
1.9K0
python的tkinter编程(十)Radiobutton单选按钮,CheckButton复选按钮  的详细解读
SQVI-如何自行创建报表?
在项目实施过程中,SAP标准报表提供的功能不能满足一些特殊的需求,因而会有一些临时的报表需求,若开发人员临时写一个报表,需要开发测试过程,时间较长,此时,实施工程师可以使用SAP提供的SQVI功能,快速自定义一个自己需要的报表。
用户5495712
2019/11/07
1.1K0
SQVI-如何自行创建报表?
android让返回按钮失效
先发制人,后发制于人。——《汉书》 我们可以重写Activity中的onBackPressed方法去实现 例如 ...就是这样
阿超
2022/08/16
1K0
android让返回按钮失效
python的tkinter编程(一)什么是tkinter,第一个基于tkinter的GUI编程,弹出窗口,创建按钮,并且在这个按钮上面加点击事件
1 创建出一个窗口 2 在窗口上面布局组件 3 让各种各样的组件活起来,也就是让各个组件有事件
一写代码就开心
2020/11/20
2.8K0
python的tkinter编程(一)什么是tkinter,第一个基于tkinter的GUI编程,弹出窗口,创建按钮,并且在这个按钮上面加点击事件
PyQt5 技巧篇-如何让窗体只显示关闭按钮
默认我们的窗体的放大、缩小、关闭按钮都是显示的,想要个性化化显示,需要我们自己设置。
小蓝枣
2020/09/23
2.8K0
【tkinter系列 第十课 TopLevel窗口部件 】
python中通常我们写程序,显示结果和操作都是在终端区,如果要想实现一个有显示界面的程序那该怎样实现呢?python中有好几个库都可以实现,这个系列我们一起来学习如何使用python自带的tkinter库来实现。
叶子陪你玩
2020/03/11
3.5K0
如何正确的创建和销毁 Java 对象?
点击关注公众号,Java干货及时送达 一、介绍 Java由Sun Microsystems发明并在1995年发布,是世界上使用最广泛的编程语言之一。Java是一个通用编程语言。由于它拥有功能强大的库、运行时、简单的语法、平台无关(Write Once, Run Anywhere - WORA)以及令人敬畏的社区从而吸引了很多的开发者。 本系列文章我们我们将会覆盖一些高级的Java概念,我们假设你对Java语言已经有一些基础知识。本系列文章并不是一个完整的参考,而是一个将您的Java技能提升到下一个级别的详
Java技术栈
2022/05/27
1.9K0
如何正确的创建和销毁 Java 对象?
销毁MBProgressHUD
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/51065513
用户1451823
2018/09/13
9550
如何正确的创建和销毁 Java 对象
> 作者 : RonTech ,链接: blog.csdn.net/zyhlwzy/article/details/78937421
Java小咖秀
2021/04/28
2.9K0
如何正确的创建和销毁 Java 对象
如何正确的创建和销毁Java对象
blog.csdn.net/zyhlwzy/article/details/78937421
好好学java
2021/04/30
1.4K0
如何正确的创建和销毁Java对象
如何正确的创建和销毁 Java 对象?
Java由Sun Microsystems发明并在1995年发布,是世界上使用最广泛的编程语言之一。Java是一个通用编程语言。由于它拥有功能强大的库、运行时、简单的语法、平台无关(Write Once, Run Anywhere - WORA)以及令人敬畏的社区从而吸引了很多的开发者。
Spark学习技巧
2023/03/21
2.3K0
如何正确的创建和销毁 Java 对象?
点击加载更多

相似问题

如何使按钮自行销毁?

12

Python:如何销毁同名按钮(tkinter)

12

如何让tkinter按钮销毁/退出嵌套函数中的根窗口?

10

单击后销毁Tkinter按钮

214

单击后tkinter销毁按钮

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文