码迷,mamicode.com
首页 > 其他好文 > 详细

Entity Framework Code First 模式-建立一对一联系

时间:2017-09-28 20:47:55      阅读:137      评论:0      收藏:0      [点我收藏+]

标签: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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!