asp.net-mvc – MVC3 DbContext保存后获取新模型的ID?
发布时间:2020-12-16 06:38:29 所属栏目:asp.Net 来源:网络整理
导读:我有一个与Product_Tag型号有1:n关系的型号产品.我也有一个模型Tag与Product_Tag有1:n的关系. class Product{ int ID {get;set;} public virtual ICollectionProduct_Tag productTag {get;set;}}class Tag { int ID {get;set;} public virtual ICollection
我有一个与Product_Tag型号有1:n关系的型号产品.我也有一个模型Tag与Product_Tag有1:n的关系.
class Product{ int ID {get;set;} public virtual ICollection<Product_Tag> productTag {get;set;} } class Tag { int ID {get;set;} public virtual ICollection<Product_Tag> productTag {get;set;} } class Product_Tag { int ID {get;set;} int ProductID{get;set;} int TagID {get;set;} public virtual Product product {get;set;} public virtual Tag tag {get;set;} } 保存新产品时,我希望能够将任何关联保存到Product_Tags中的标签. Product_Tag需要PRoductID和TagID.我在保存时可以使用TagID,但ProductID将来自新创建的产品.保存新产品后如何立即获取新创建的产品ID? 或者,有没有办法只使用只有TagID的productTag保存Product模型并获取DbContext来为我填写ProductID? 解决方法
向数据库添加新实体时,Entity Framework将自动填充其ID.你可以使用它.
using (var context = new MyDbContext()) { var product = new Product(); product.Name = "My product"; context.Products.Add(product); context.SubmitChanges(); var productId = product.ID; // here you can get ID of added product } 此外,EF可以使用“多对多”关系,并且您不需要为关系本身创建其他类.如果您首先使用代码,则可以使用此映射: public class Product { int ID {get;set;} public virtual ICollection<Tag> Tags {get;set;} } public class Tag { int ID {get;set;} public virtual ICollection<Product> Products {get;set;} } // In your DbContext class: protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Entity<Product>().HasMany(x => x.Tags).WithMany(x => x.Products) .Map(m => { m.ToTable("Product_Tag"); // Relationship table name m.MapLeftKey("ProductID"); // Name of column for product IDs m.MapRightKey("TagID"); // Name of column for tag IDs }); } 然后,你可以做这样的事情: using (var context = new MyDbContext()) { var product = new Product(); product.Name = "My product"; product.Tags.Add(new Tag {Name = "furniture"}); product.Tags.Add(new Tag {Name = "food"}); context.Products.Add(product); context.SubmitChanges(); } 在这种情况下,EF会自动创建一个新产品,两个标签以及创建的产品和标签之间的两个关系. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – __doPostBack在DotNetNuke网站上未定义为IE 10
- asp.net-mvc – Kendo UI饼图工具提示是否包含系列类别名称
- Kendo UI ASP.NET MVC使用教学视频集锦(高清在线观看)
- asp.net – Internet Explorer 8 – 据报道该网站不安全
- asp.net – RouteTable.Routes和HttpConfiguration.Routes之
- asp.net-mvc – ASP MVC3在actionlink中插入html标签
- geoIP从ASP.NET中查找国家/地区
- asp.net-mvc – 抛出一个404像StackOverflow的,没有重定向,
- App_GlobalResources(ASP.NET)中的子文件夹
- asp.net – 将HTML表导出到Excel
推荐文章
站长推荐
- asp.net-core – 从Controller传递信息到中间件
- asp.net-mvc – 如何使用ASP.NET MVC的plupload包
- 我的团队成员不支持使用asp.net中提供的验证控件
- asp.net – 如何在图像上创建图层?
- asp.net – Internet Explorer中的图像加载超时
- asp.net-mvc-3 – MVC3值不能为null 参数名称:值
- asp.net-mvc-3 – ViewBag.Title错误
- asp.net-mvc – 为什么验证请求取自ASP.net MVC?
- asp.net mvc 中使用async/await异步编程
- asp.net-mvc – ASP.NET MVC中的本地化
热点阅读