zoukankan      html  css  js  c++  java
  • Entity Framework Code First 模式-建立一对一联系

    使用的例子为教室(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); 

    结果:

  • 相关阅读:
    软件测试homework2
    软件测试homework1
    ubuntu14 安装QUME+xv6
    判断两线段是否相交 模板
    并查集 HDU1558
    并查集 HDU1272
    并查集 HDU1232
    数据结构之单向链表 UVa11988
    Java大数 字符串处理 HDU2100
    Java大数中的小数 HDU1753
  • 原文地址:https://www.cnblogs.com/engineerlm/p/7608263.html
Copyright © 2011-2022 走看看