EntityFramework之一对一关系(二)
2016-05-02 14:24
323 查看
下面新建两个实体,关系为一对一
Product为产品类,WarrantyCard为保修卡类,一个产品对应一个保修卡,一个保修卡对应一个产品。
1、新建实体类
2、创建EntityContext类并继承DbContext
3、在web.config文件中添加数据库连接字符串
4、创建表映射类
HasOptional(p => p.WarrantyCard).WithRequired(p => p.Product)这句大概意思是:在新增数据到Product表时可以不加数据到WarrantyCard表,也可以加,
但是往WarrantyCard表新增数据时必须有Product表中的ProductId,WarrantyCard依赖Product,生成的是关系是Product表Id是主键,WarrantyCard表ProductId是外键。
5、写点代码测试一下
6、数据库关系图
Product为产品类,WarrantyCard为保修卡类,一个产品对应一个保修卡,一个保修卡对应一个产品。
1、新建实体类
public class Product { public int Id { get; set; } public string Name { get; set; } public string Description { get; set; } public virtual WarrantyCard WarrantyCard { get; set; } } public class WarrantyCard { public int ProductId { get; set; } public DateTime ExpiredDate { get; set; } public virtual Product Product { get; set; } }
2、创建EntityContext类并继承DbContext
public class EntityContext : DbContext { public EntityContext() : base("name=DBConnectionString") { } public DbSet<Product> Product { get; set; } public DbSet<WarrantyCard> WarrantyCard { get; set; } protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Configurations.AddFromAssembly(Assembly.GetExecutingAssembly()); base.OnModelCreating(modelBuilder); }
3、在web.config文件中添加数据库连接字符串
<connectionStrings> <add name="DBConnectionString" connectionString="Data Source=.;Initial Catalog=OneToOne;Integrated Security=true" providerName="System.Data.SqlClient" /> </connectionStrings>
4、创建表映射类
public class ProductMap : EntityTypeConfiguration<Product> { public ProductMap() { ToTable("Product"); HasKey(p => p.Id); //两条语句效果一样 HasOptional(p => p.WarrantyCard).WithRequired(p => p.Product); //HasRequired(p => p.WarrantyCard).WithRequiredPrincipal(i => i.Product); } } public class WarrantyCardMap : EntityTypeConfiguration<WarrantyCard> { public WarrantyCardMap() { ToTable("WarrantyCard"); HasKey(w => w.ProductId); } }
HasOptional(p => p.WarrantyCard).WithRequired(p => p.Product)这句大概意思是:在新增数据到Product表时可以不加数据到WarrantyCard表,也可以加,
但是往WarrantyCard表新增数据时必须有Product表中的ProductId,WarrantyCard依赖Product,生成的是关系是Product表Id是主键,WarrantyCard表ProductId是外键。
5、写点代码测试一下
EntityContext db = new EntityContext(); var product = new Product() { Description = "电器", Name = "电磁炉" }; db.Set<Product>().Add(product); db.SaveChanges(); var card = new WarrantyCard() { ExpiredDate = DateTime.Now, ProductId = product.Id }; db.Set<WarrantyCard>().Add(card); db.SaveChanges(); //WarrantyCard为Product类中的WarrantyCard属性名 var list = db.Set<Product>().Include("WarrantyCard").ToList();
6、数据库关系图
相关文章推荐
- Scrum团队成立
- Android Tween Animation XML文件中标签的使用
- Android官方开发文档Training系列课程中文版:打印内容之图像打印
- IOS常见的加密方法,常用的MD5和Base64
- IOS常见的加密方法,常用的MD5和Base64
- ubuntu 上apt-get 安装 php5.6过程和nginx php-fpm 502 问题
- 打印流的使用
- 黑色遮罩引导蒙版 CSS实现方式
- N-01. 网线连接登录 ❀ 网康 (NETENTSEC) 防火墙
- C语言打印9*9乘法口诀表
- C#设计模式学习笔记(一) 之 简单工厂模式
- 内存操作流(处理临时信息)
- 分布式存储初认识——竹子整理
- Ubuntu16.04 用root身份登陆
- UVa 1594 Ducci Sequence
- C++ 模板函数 知多少?
- 操作基本数据类型的流
- 精通 CSS 选择器
- 1017. A除以B (20)----string的额外操作
- nyoj1062