Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Ánh xạ khóa ngoại với tên cột tùy chỉnh

Nếu bạn không muốn sử dụng cú pháp thông thạo, có ba cách khác để triển khai tham chiếu bằng cách sử dụng chú thích dữ liệu (Cá nhân tôi thích chú thích dữ liệu hơn vì chúng có vẻ dễ đọc hơn và được viết ngay trên thuộc tính mà chúng đang ảnh hưởng):

1.1) Sử dụng ForeignKey (với một thuộc tính liên quan) - phiên bản 1

[Table("WIDGETENTITIES")]
public class WidgetEntity {

    [Column("WIDGETENTITY_ID")]
    public int Id { get; set; }

    [Column("WIDGETSEQUENCE_ID")]
    public int WidgetSequenceId { get; set; }

    [ForeignKey("WidgetSequenceId")] //Has to be a property name, not table column name
    public WidgetSequence Sequence { get; set; }

    // and other properties that map correctly
}

[Table("WIDGETSEQUENCES")]
public class WidgetSequence { 

    [Column("WIDGETSEQUENCE_ID")]
    public int Id { get; set; }

    [Column("NUMBER")]
    public int Number { get; set; }
}

1.2) Sử dụng ForeignKey (với một thuộc tính liên quan) - phiên bản 2

[Table("WIDGETENTITIES")]
public class WidgetEntity {

    [Column("WIDGETENTITY_ID")]
    public int Id { get; set; }

    [ForeignKey("Sequence")] //Has to be a property name, not table column name
    [Column("WIDGETSEQUENCE_ID")]
    public int WidgetSequenceId { get; set; }

    public WidgetSequence Sequence { get; set; }

    // and other properties that map correctly
}

[Table("WIDGETSEQUENCES")]
public class WidgetSequence { 

    [Column("WIDGETSEQUENCE_ID")]
    public int Id { get; set; }

    [Column("NUMBER")]
    public int Number { get; set; }
}

2) Bạn cũng có thể sử dụng InversePropertyAttribute.

[Table("WIDGETENTITIES")]
public class WidgetEntity {

    [Column("WIDGETENTITY_ID")]
    public int Id { get; set; }

    [InverseProperty("WidgetEntities")]
    public WidgetSequence Sequence { get; set; }

    // and other properties that map correctly
}

[Table("WIDGETSEQUENCES")]
public class WidgetSequence { 

    [Column("WIDGETSEQUENCE_ID")]
    public int Id { get; set; }

    [Column("NUMBER")]
    public int Number { get; set; }

    public virtual List<WidgetEntity> WidgetEntities { get; set; }
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sự cố xây dựng cx_Oracle - libclntsh.so.11.1 => không tìm thấy

  2. Cách khai báo ngoại lệ do người dùng xác định bằng biến ngoại lệ trong cơ sở dữ liệu Oracle

  3. Oracle-XMLTYPE:Cách cập nhật giá trị

  4. Làm cách nào để chuyển đổi câu lệnh nối bên ngoài bên trái kế thừa trong Oracle?

  5. Hàm TANH () trong Oracle