sql >> データベース >  >> RDS >> Oracle

カスタム列名を使用した外部キ​​ーのマッピング

    流暢な構文を使用したくない場合は、データアノテーションを使用して参照を実装する他の3つの方法があります(個人的には、データアノテーションは読みやすく、影響を受けるプロパティのすぐ上に書き込まれるため、データアノテーションの方が好きです):

    >

    1.1)ForeignKeyを使用する(関連付けられたプロパティを使用)-バージョン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)ForeignKeyを使用する(関連付けられたプロパティを使用)-バージョン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)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. データベースのディスク容量の計画

    2. SQLServer結果セットの行を制限する方法

    3. 動的SQL(パラメーターとしてテーブル名を渡す)

    4. PostgreSQL9.6beta1用のPGLogical1.1パッケージ