Entity Framework一对多关系添加数据的两种方式
2018-06-17 21:54:32来源:未知 阅读 ()
当使用Entity Framework添加一对多关系数据的时候,通常先添加一的数据,然后再添加多的数据。类似这样:
//添加一的数据 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不设置也行。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- faster-rcnn错误信息 : tensorflow.python.framework.error 2019-07-24
- RobotFramework + HTTP接口自动化实现 2019-07-24
- REST Framework 处理一个超链接序列化问题 2019-05-22
- MySQL数据库之-foreign key 外键(一对多、多对多、一对一) 2019-05-16
- day91 DjangoRestFramework学习三之认证组件、权限组件、频 2019-04-25
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash