Entity Fraamewark Database/Code Firstは表を圧縮して配置することを実現します。
2073 ワード
私はDatabase Firstを採用しています。Sqlで一つの表を圧縮できます。以下のように:
同じMyConteextの下で、新しいデータベースが自動的に生成されることを要求します。Database Firstが逆になったら、DbContectを利用して新しいデータベースを生成します。これはCode Fristに似ています。最初は、私はoverride OnModelCreating(DbModelBulder modelBuider)をここで実現するつもりです。両方の原因でできないことが分かりました。まず、対応するC〓〓〓バージョンのAppを見つけられませんでした。第二に、この方法の名前のように、モデルの作成時に、関連するテーブルがまだ確立されていないので、表を修正することができません。
最後に他の方法を採用するしかないです。CreateDatabaseIfNotExists類を継承して、そしてoverride Seed(MyContect context)方法になりました。この方法の実行時間はデータベースの最初の生成後である。この時は表の修正に最適です。具体的には以下の通りです
ここでは、Microsoft SQL SERVER Management Studioに対応するテーブル->Propties->Strage->Comppressionに対応するComppression typeが見られます。
具体的に圧縮を行うかどうかを確認する方法:
ここでは、Microsoft SQL SERVER Management Studioに対応するテーブル->Propties->Strage->Comppressionに対応するComppression typeが見られます。
CREATE TABLE [dbo].[Entities](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](max) NULL,
Primary Key Clustered ([Id] ASC) WITH (DATA_COMPRESSION=PAGE)
);
残念なことに、私がDatabase Firstを採用した後です。逆方向のDbContect(MyContectと名づけます。)を使って自動的に別のデータベースを生成すると、新しく作成したデータベースにはEnttiesというテーブルにPageレベルの圧縮が行われていないことが分かりました。同じMyConteextの下で、新しいデータベースが自動的に生成されることを要求します。Database Firstが逆になったら、DbContectを利用して新しいデータベースを生成します。これはCode Fristに似ています。最初は、私はoverride OnModelCreating(DbModelBulder modelBuider)をここで実現するつもりです。両方の原因でできないことが分かりました。まず、対応するC〓〓〓バージョンのAppを見つけられませんでした。第二に、この方法の名前のように、モデルの作成時に、関連するテーブルがまだ確立されていないので、表を修正することができません。
最後に他の方法を採用するしかないです。CreateDatabaseIfNotExists類を継承して、そしてoverride Seed(MyContect context)方法になりました。この方法の実行時間はデータベースの最初の生成後である。この時は表の修正に最適です。具体的には以下の通りです
public class CreateDatabaseWithCompressionIfNotExists : CreateDatabaseIfNotExists
{
protected override void Seed(testEntities context)
{
var cmd = new SqlCommand();
var con = new SqlConnection(context.Database.Connection.ConnectionString);
con.Open();
cmd.Connection = con;
cmd.CommandType = CommandType.Text;
cmd.CommandText = "alter table entities rebuild with (data_compression=page);";
cmd.ExecuteNonQuery();
}
}
Main関数からの呼び出し: private static void Main(string[] args)
{
Database.SetInitializer(new CreateDatabaseWithCompressionIfNotExists());
// 。
var test = new testEntities();
test.Entities.Add(new Model.Entity());
test.SaveChanges();
}
具体的に圧縮を行うかどうかを確認する方法:ここでは、Microsoft SQL SERVER Management Studioに対応するテーブル->Propties->Strage->Comppressionに対応するComppression typeが見られます。
具体的に圧縮を行うかどうかを確認する方法:
ここでは、Microsoft SQL SERVER Management Studioに対応するテーブル->Propties->Strage->Comppressionに対応するComppression typeが見られます。