MaxLength属性を使用する必要があります。
[MaxLength(16)]
public byte[] test { get; set; }
上記はtinyblobデータ型のwich can have indexing/primary key problemsになります。マイグレーションを使用している場合には、この変身:
AddColumn("dbo.testDB", "test", c => c.Binary(storeType: "tinyblob"));
あなたは属性column
を使用して、インデックス/主キーが必要な場合は"Binary"
にTypeName
を設定することができます。
[MaxLength(16), Column(TypeName = "Binary")]
public byte[] test { get; set; }
上記の結果は、私にとってはバイナリ(1)の列になります(ここで私が得た方法です)。
編集:単に移行ファイルにbinary
後(16)
を追加し、正しい長さのバイナリ列を取得するには:
AddColumn("dbo.testDB", "test", c => c.Binary(storeType: "binary(16)"));
残念ながら、列の属性の型名が動作しない、それを追加します。
Edit2:カスタムMySqlMigrationSqlGeneratorを作成して、移行ファイルを編集することなく、正しいデータベースを取得することができます。
internal class CustomMySqlMigrationSqlGenerator : MySqlMigrationSqlGenerator
{
protected override MigrationStatement Generate(CreateTableOperation op)
{
MigrationStatement statement = base.Generate(op);
foreach (ColumnModel column in op.Columns)
{
if (column.MaxLength.HasValue)
{
statement.Sql = statement.Sql.Replace($"`{column.Name}` binary", $"`{column.Name}` binary({column.MaxLength.Value})");
}
}
return statement;
}
}
私は何かを見逃しましたか? Entity FrameworkはSQL Serverとのみ互換性がありますか? – Yuck
@Yuck EntityフレームワークはSQL Serverと互換性があるだけではありません。http://en.wikipedia.org/wiki/ADO.NET_Entity_Framework#Entity_Framework_ADO.NET_providers –
しかし、コードの最初のほうが、よりリーンなリスト –