当使用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. 纵表、横表互转的SQL

    纵表.横表互转的SQL By:大志若愚 1.建表: 纵表结构 Table_A  create table Table_A ( 姓名 ), 课程 ), 成绩 int ) ) ) ) ) ) 姓名 课程 ...

  2. FreeBSD_11-系统管理——{Part_6 - SYSCTL}

    sysctl 常见参数 Name Type Changeable 示例 & 示意 kern.ostype string no FreeBSD kern.osrelease string no ...

  3. mac下java 开发环境搭建

    mac配置java开发环境: jdk1.7 +sdk1.7+maven +tomcat   1.先安装jdk ,才能安装sdk . 2 mac中jdk1.7的默认位置:/Library/Java/Ja ...

  4. Xcode升级更新后,恢复cocoapods以及插件的方法

    今天将手机系统更新到iOS9.3了,在Xcode7.1上做真机调试,提示找不到适合的SDK,才知道必须要升级Xcode才行,于是升级Xcode到7.3. 升级之后遇到很多麻烦,cocoapods没有了 ...

  5. 【洛谷P1378】油滴扩展

    搜索-- PS一个坑点:r<=0时并不是舍弃这种情况,而是让r=0 (因为每个点都要放一滴油)(读题啊!) #include<cstdio> #include<cstring& ...

  6. spring:bean的定义

    一个完整的Bean的配置文件: <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE beans ...

  7. 河南省第八届ACM程序设计大赛

    A:挑战密室 #include <iostream> #include <cstdio> #include <cstring> #include <algor ...

  8. andriod终端操作命令

    1.卸载大厅安装包,如果卸载不掉的话,添加-r pm uninstall -r com.scigames.egm.lobby 2.查找包含"scigames"的安装包 3.卸载一个 ...

  9. [Xamarin] 關於Internal Storage ,存取App內部使用資料 (转帖)

    最近在開發App,會使用到必須要處理一些App所使用的資料,上網路查一下Android 得作法,包含我自己也實作了一下,可能是因為對Java || Android 不是很孰悉,常常錯在 java.la ...

  10. 设计模式之美:Adapter(适配器)

    索引 别名 意图 结构 参与者 适用性 效果 相关模式 实现 实现方式(一):简单直接的对象适配器. 实现方式(二):实现双向类适配器. 别名 包装器(Wrapper) 意图 将一个类的接口转换成客户 ...