FreeSql(C)エンティティプロパティ

主キー(主キー)

class Topic {
    [Column(IsPrimary = true)]
    public int Id { get; set; }
}

表記:

  • 指定されていない場合、主キーという名前のIDフィールドが主キーとなる;(大文字と小文字を区別しません)

  • 主キーにGUID型である場合には、自動的にあなたが(注文した、ではない複製)値、その割り当てを所有する必要はありません挿入したときに作成されます。(サポートは、分散)

インクリメント(アイデンティティ)

class Topic {
    [Column(IsIdentity = true)]
    public int Id { get; set; }
}

表記:

  • 主キーを指定しない場合、自己増力部材マークは、主キーとなります。

一意キー(一意キー)

class AddUniquesInfo {

    public Guid id { get; set; }
    [Column(Unique = "uk_phone")]
    public string phone { get; set; }

    [Column(Unique = "uk_group_index, uk_group_index22")]
    public string group { get; set; }
    
    [Column(Unique = "uk_group_index")]
    public int index { get; set; }

    [Column(Unique = "uk_group_index22")]
    public string index22 { get; set; }
}

ユニークキー、米国債の同じ識別子、代表で複数の属性を指定し、カンマで区切った複数UNIQUEKEY名。

データベースの種類(DbTypeの)

class Topic {
    [Column(DbType = "varchar(128) NOT NULL")]
    public string Title { get; set; }
}

NOT NULLをタイプで指定することができ、また、缶[カラム(ISNULLABLE =偽)]が提供されます。

0.9.12バージョンは、上記のVARCHAR(128)のように書き換えることができ、頻繁に使用される文字列のトラブルを避け、のMaxLengthプロパティを解析追加します。

class Topic {
    [MaxLength(128)]
    public string Title { get; set; }
}
说明:由于内部按名称反射查找特性的,所以 MaxLengthAttribute 可以在任意地方定义。
该特性通常定义在 System.ComponentModel.DataAnnotations.MaxLengthAttribute。
如果找不到该类,可自行在项目中定义名称为 MaxLengthAttribute 的特性类,如下:

public class MaxLengthAttribute : Attribute
{
    public int Length { get; }
    public MaxLengthAttribute(int length)
    {
        this.Length = length;
    }
}

空にすることができます(NULL可能)

class Topic {
    [Column(IsNullable = false)]
    public string Title { get; set; }
}

DbTypeの、ISNULLABLE時間を指定しないでください、FreeSqlのような、デフォルトの設定で提供しました:

  • int型 - > NOT NULL(空ではありません)
  • int型 - ?>ヌル(空にすることができます)

手動で空(ヌル文字列がデフォルトしてもよい)するかどうかの文字列が使用され、一般的に入力のみ指定する必要があります。

無視(無視)

class Topic {
    [Column(IsIgnore = true)]
    public string Title { get; set; }
}

エンティティは場合マッピング属性は、内部自動マッピングオブジェクトを無視し、使用する必要はないしたとき。

エンティティが許容される属性タイプ内にない場合、それは不要として指定され、特定の指定できません。

class Topic {
    [Column(IsIgnore = true)]
    public Topic Parent { get; set; }
}

楽観的ロック(RowVersion)

class Topic {
    public Guid id { get; set; }
    public string Title { get; set; }

    [Column(IsVersion = true)]
    public int Version { get; set; }
}

エンティティ全体のデータを更新する場合、同時の場合には非常に簡単に新しいレコード古いデータの更新につながります。

行レベルのロックの原理、など、フィールド・エンティティを使用することである:長いバージョン、更新前の最初のチェックデータ、ケース1のバージョンは、追加のアップデートバージョン= 1、変更障害(すなわちAffrows ==生成されるSQL 0)例外をスローします。

各エンティティは、唯一の行レベルロックプロパティをサポート。

どんなに適用SetSource更新された値は、どのような方法1の更新バージョンを増加します

カスタム型マッピング(マップタイプ)

class EnumTestMap {
    public Guid id { get; set; }

    [Column(MapType = typeof(string))]
    public ToStringMapEnum enum_to_string { get; set; }
    [Column(MapType = typeof(string))]
    public ToStringMapEnum? enumnullable_to_string { get; set; }

    [Column(MapType = typeof(int))]
    public ToStringMapEnum enum_to_int { get; set; }
    [Column(MapType = typeof(int?))]
    public ToStringMapEnum? enumnullable_to_int { get; set; }

    [Column(MapType = typeof(string))]
    public BigInteger biginteger_to_string { get; set; }
    [Column(MapType = typeof(string))]
    public BigInteger? bigintegernullable_to_string { get; set; }
}
public enum ToStringMapEnum { 中国人, abc, 香港 }

あなたはそれを説明する必要はないでしょうか?

BigIntegerを使用してマッピングされますが、注意してくださいすることができます。便利なだけCURD、==裁判官は達成できない、使用することができます等しい+ - * /と他の操作。

v0.9.15放出値は、オブジェクトtypeof演算(文字列)、拡張されたパッケージのインストールにマッピングすることができます。

DOTNETは、パッケージを追加FreeSql.Extensions.JsonMap

fsql.UseJsonMap(); //开启功能

class TestConfig
{
    public int clicks { get; set; }
    public string title { get; set; }
}
[Table(Name = "sysconfig")]
public class S_SysConfig<T>
{
    [Column(IsPrimary = true)]
    public string Name { get; set; }

    [JsonMap]
    public T Config { get; set; }
}

フィールド位置(位置)

該当するシーン:エンティティクラスの継承、CodeFirstは、フィールドオーダーのテーブルを作成することは望んでいないことがあり、この機能によって順序を設定することができます。

ようなテーブル位置指定されたフィールドの作成:[カラム(位置= 1]、即ち、逆方向を負の位置であってもよいです。

名前

FreeSqlデフォルトのクラスのエンティティの名前またはデータベースのマッピングに属性名は、名前のマッピングを指定することもできます。

表の指定エンティティは、指定した名前の後に、エンティティクラス名の変更は、対応するデータベース・テーブルには影響を与えません。FreeSqlは、テーブル名を指定するために抗しようと、いないサポートまたはマルチデータベーススキーマをサポートしよう:他のデータベーステーブル名の後に、詳細な答えである別のデータベースを、指定するためのさまざまな方法があります。

[Table(Name = "db2.tb_topic111")]
class Topic {
  //...
}

エンティティの名前を指定、変更するエンティティクラス名。古いデータベーステーブル名を指定し、エンティティ名を変更し、変更前の値に、このパラメータを設定し、CodeFirstは正しくデータベーステーブルを変更することができ、そうでない場合は、新しいテーブル[]を作成するものとみなされます。

[Table(OldName = "Topic")]
class Topic2 {
  //...
}

エンティティの属性は、同じ機能を持っている、【コラム(名前=「XXX」)]

移行を無効にします

IFreeSql.CodeFirst.IsAutoSyncStructureは自動的にIFreeSqlセットアップ機能を作成するために、[グローバル]機能に加えて、時間を通じてFreeSqlBuilder.UseAutoSyncStructure(真の)構造を移行するように設定することができます。

[]エンティティによってエンティティクラスビューまたは他のデータベース、マイグレーション操作に対応する場合、[表(DisableSyncStructure =真)]指定された無効にします。

[Table(DisableSyncStructure = true)]
class ModelDisableSyncStructure {
    [Column(IsPrimary = false)]
    public int pkid { get; set; }
}

リマーク

FreeSql CodeFirstは、Notesデータベースに移行するためにC#のコード内のコメントをサポートしています。前提条件:

エンティティクラスアセンブリは、XMLドキュメントの機能を開く必要があります1、。

2、xmlファイルは、プログラムと同じディレクトリに設定する必要があり、ファイル名:xxx.dll - > xxx.xml。

おすすめ

転載: www.cnblogs.com/FreeSql/p/11531302.html