标签:dep 代码 ota 一个 logs rem 联系 ram 两种
使用的例子为教室(ClassRoom),教室里的多媒体设备(Device),一个教室里有一套多媒体设备,一套多媒体设备只放在一个教室里。
1.Data Annotations方式
需要在任意一方的主键属性上加ForeignKey,以下是这两种方式的代码以及结果
方法一:
代码:
public class Device { [Key, ForeignKey("ClassRoom")] public Guid ClassRoomId { get; set; } public virtual ClassRoom ClassRoom { get; set; } public string Remark { get; set; } }
public class ClassRoom { public Guid Id { get; set; } [ MaxLength(10)] public string Number { get; set; } public virtual Device Device { get; set; } public string Remark { get; set; } }
测试结果:
方法二:
代码:
public class Device { public Guid Id { get; set; } public virtual ClassRoom ClassRoom { get; set; } public string Remark { get; set; } }
public class ClassRoom { [Key, ForeignKey("Device")] public Guid DeviceId { get; set; } [ MaxLength(10)] public string Number { get; set; } public virtual Device Device { get; set; } public string Remark { get; set; } }
执行结果:
2.Fluent API方式
主要使用WithRequiredPrincipal以及WithRequiredDependent方法,前者属性会被另外的实体引用,后者将引用另外的实体。
方法一:
代码:
public class ClassRoom { public Guid ClassRoomId { get; set; } [ MaxLength(10)] public string Number { get; set; } public virtual Device Device { get; set; } public string Remark { get; set; } }
public class Device { public Guid DeviceId { get; set; } public virtual ClassRoom ClassRoom { get; set; } public string Remark { get; set; } }
modelBuilder.Entity<ClassRoom>().HasRequired(t => t.Device).
WithRequiredPrincipal(t => t.ClassRoom);
结果:
方法二:
代码:
两个类都是相同的,这里就不做展示了
modelBuilder.Entity<ClassRoom>().HasRequired(t => t.Device).
WithRequiredDependent(t => t.ClassRoom);
结果:
Entity Framework Code First 模式-建立一对一联系
标签:dep 代码 ota 一个 logs rem 联系 ram 两种
原文地址:http://www.cnblogs.com/engineerlm/p/7608263.html