Entity Framework一对多关系添加数据的两种方式
2016-03-03 10:06
429 查看
当使用Entity Framework添加一对多关系数据的时候,通常先添加一的数据,然后再添加多的数据。类似这样:
以上,我们对Category和Product分别进行了Add操作,然后统一SaveChanges。是否可以对Category的Products属性赋值,只对Catetegory进行Add,然后SaveChanges呢?
也就是按如下:
那就验证下。
来两个一对多关系的领域模型。
创建上下文:
配置连接字符串:
客户端程序:
运行成功。
总结:当使用Entity Framework添加一对多关系数据的时候,我们通过给一的集合属性赋值,只context.代表一的表s.Add(代表一的实例),也同样可以在数据库中为代表多的那个表添加数据。并且,代表多的那个DbSet不设置也行。
//添加一的数据 var category = new Category{Name="类别1"}; category = context.Categories.Add(category); //添加多的数据 for(var i = 0; i < 2; 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 = 0; i < 2; 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=0;i<2;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不设置也行。
相关文章推荐
- 【设计模式】15.解释器模式
- 网站用户行为数据挖掘
- symbol not found 是怎么回事啊?
- 千兆以太网的物理层
- Git for windows 中文乱码解决方案
- 《从零开始学Swift》学习笔记(Day 38)——构造函数与存储属性初始化
- css3兼容IE8的方案 各个ie的hack
- 您的 App 正在使用广告标识符 (IDFA)
- Spark常见问题汇总
- 3529: [Sdoi2014]数表 莫比乌斯反演+树状数组
- [转载]CSS居中完全指南
- IOS UIStepper(步进控件)使用总结
- Ubuntu15.10下华南师大锐捷认证客户端的使用详解
- C语言函数参数为空和void
- this关键字
- 如何同时支持leftBarButtonItem及右滑返回手势
- LINK : fatal error LNK1181: 无法打开输入文件“a.lib,b.lib” 可能原因是什么?
- Qt入门-加入资源文件
- iOS 拨打电话
- SSAS快速入门