当使用Entity Framework添加一对多关系数据的时候,通常先添加一的数据,然后再添加多的数据。类似这样:

//添加一的数据
var category = new Category{Name="类别1"};
category = context.Categories.Add(category); //添加多的数据
for(var i = ; i < ; i++)
{
context.Products.Add(new Product{
Name = "产品" + i,
CategoryId = category.Id});
} context.SaveChanges();

以上,我们对Category和Product分别进行了Add操作,然后统一SaveChanges。是否可以对Category的Products属性赋值,只对Catetegory进行Add,然后SaveChanges呢?

也就是按如下:

var category = new Category{Name="类别1"};
for(var i = ; i < ; i++){
category.Products.Add(new Product{
Name="产品" + i,
Category = category
});
}
context.Categories.Add(category);
context.SaveChanges();

那就验证下。

来两个一对多关系的领域模型。

    public class Product
{
public int Id { get; set; }
public string Name { get; set; } public int CategoryId { get; set; }
public virtual Category Category { get; set; }
} public class Category
{
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection<Product> Products { get; set; } public Category()
{
Products = new List<Product>();
}
}

创建上下文:

    public class EFTestContext: DbContext
{
public EFTestContext() : base("conn")
{ } public DbSet<Category> Categories { get; set; } }

配置连接字符串:

  <connectionStrings>
<add name="conn"
connectionString="Data Source=.;User=YourUsername;Password=YourPassword;Initial Catalog=EFTest;Integrated Security=True"
providerName="System.Data.SqlClient"/>
</connectionStrings>

客户端程序:

        static void Main(string[] args)
{
using (var context = new EFTestContext())
{
var category = new Category
{
Name = "产品类别3"
}; for(var i=;i<;i++)
{
category.Products.Add(new Product {
Name = "产品" + i,
//Category = category
CategoryId = category.Id
});
} context.Categories.Add(category);
context.SaveChanges();
} Console.WriteLine("运行结束");
Console.ReadKey();
}

运行成功。

总结:当使用Entity Framework添加一对多关系数据的时候,我们通过给一的集合属性赋值,只context.代表一的表s.Add(代表一的实例),也同样可以在数据库中为代表多的那个表添加数据。并且,代表多的那个DbSet不设置也行。

Entity Framework一对多关系添加数据的两种方式的更多相关文章

  1. SparkStreaming获取kafka数据的两种方式:Receiver与Direct

    简介: Spark-Streaming获取kafka数据的两种方式-Receiver与Direct的方式,可以简单理解成: Receiver方式是通过zookeeper来连接kafka队列, Dire ...

  2. SparkStreaming与Kafka,SparkStreaming接收Kafka数据的两种方式

    SparkStreaming接收Kafka数据的两种方式 SparkStreaming接收数据原理 一.SparkStreaming + Kafka Receiver模式 二.SparkStreami ...

  3. 【代码笔记】iOS-向服务器传JSON数据的两种方式

    一,代码. - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. ...

  4. angular学习笔记(三)-视图绑定数据的两种方式

    绑定数据有两种方式: <!DOCTYPE html> <html ng-app> <head> <title>2.2显示文本</title> ...

  5. C++读取字符串数据的两种方式

    C++读取字符串数据的两种方式 对于同样的样例输入: ladder came tape soon leader acme RIDE lone Dreis peat ScAlE orb eye Ride ...

  6. easyUI之datagrid绑定后端返回数据的两种方式

    先来看一下某一位大佬留下的easyUI的API对datagrid绑定数据的两种方式的介绍. 虽然精简,但是,很具有“师傅领进门,修行靠个人”的精神,先发自内心的赞一个. 但是,很多人和小编一样,第一次 ...

  7. 关于MySQL中添加数据的两种方法

    下面介绍两种执行SQL命令的方法,并作出相应地总结,第一种介绍一种常规用法,下面进行做简要地分析,首先我们需要执行打开数据库操作首先创建一个MySqlConnection对象,在其构造函数中传入一个连 ...

  8. iOS 通过URL网络获取XML数据的两种方式

    转载于:http://blog.csdn.net/crayondeng/article/details/8738768 下面简单介绍如何通过url获取xml的两种方式. 第一种方式相对简单,使用NSD ...

  9. ORACLE导入大量数据的两种方式比较

    不管是开发还是测试,工作中经常需要去批量新增测试数据,但是大量数据的新增速度有时候让我们苦不堪言,下面通过两种方式完成oracle数据的批量新增,比较两种方式的效率. 第一种方式:采用工具导入sql文 ...

随机推荐

  1. Python.Scrapy.12-scrapy-source-code-analysis-part-2

    Scrapy 源代码分析系列-2 signals, signalmanager, project, conf 1. 模块: signals.py signalmanager.py project.py ...

  2. session的使用方法

    概念:session把客户资料存在服务器中,给浏览器一个加密凭证,每次登录生成的凭证都不相同,浏览器用cookie保存凭证.下次访问时服务器收到凭证后,打开文件读取session信息.session_ ...

  3. 利用RBAC模型实现一个通用的权限管理系统

    本文主要描述一个通用的权限系统实现思路与过程.也是对此次制作权限管理模块的总结. 制作此系统的初衷是为了让这个权限系统得以“通用”.就是生产一个web系统通过调用这个权限系统(生成的dll文件), 就 ...

  4. 老调重弹:JDBC系列之<驱动加载原理全面解析) ----转

      最近在研究Mybatis框架,由于该框架基于JDBC,想要很好地理解和学习Mybatis,必须要对JDBC有较深入的了解.所以便把JDBC 这个东东翻出来,好好总结一番,作为自己的笔记,也是给读者 ...

  5. 根据Url 获取图片尺寸 iOS

    // 根据图片url获取图片尺寸 +(CGSize)getImageSizeWithURL:(id)imageURL {     NSURL* URL = nil;     if([imageURL ...

  6. Magicodes.WeiChat——后台JS框架封装

    Magicodes.WeiChat同时也致力于提高后台开发效率,因此对在后台前端这块也做了一定的封装.我们先来说说主要的框架JS——mwc.js和mwc_elements.js.这两个JS文件位于Sc ...

  7. Dynamic CRM 2013学习笔记(八)过滤查找控件 (类似省市联动)

    我们经常要实现类似省市联动一样的功能,常见的就是二个查找控件,一个选择了省后,另一个市的查找控件就自动过滤了,只显示当前省下的市,而不是所有的市.当然这是最简单的,实际工作中还有更复杂的功能要通过过滤 ...

  8. ASP.NET Core 源码阅读笔记(3) ---Microsoft.AspNetCore.Hosting

    有关Hosting的基础知识 Hosting是一个非常重要,但又很难翻译成中文的概念.翻译成:寄宿,大概能勉强地传达它的意思.我们知道,有一些病毒离开了活体之后就会死亡,我们把那些活体称为病毒的宿主. ...

  9. C#设计模式(18)——中介者模式(Mediator Pattern)

    一.引言 在现实生活中,有很多中介者模式的身影,例如QQ游戏平台,聊天室.QQ群和短信平台,这些都是中介者模式在现实生活中的应用,下面就具体分享下我对中介者模式的理解. 二. 中介者模式的介绍 2.1 ...

  10. 在Linux Ubuntu上编译DNX

    DNX是.NET Execution Environment,前身是XRE,XRE的前身是KRuntime,项目网址:https://github.com/aspnet/DNX . 签出DNX的代码: ...