Entity Framework 6.1のコードファーストを使用しており、ドメインモデルは次のとおりです。
class Item
{
[Index]
public string CreatedBy { set; get; }
}
移行にデータベースの更新を使用すると、次のエラーが表示されます。しかし、私が調べた限り_[Index]
はstring
への注釈として機能します。
テーブル 'dbo.Items'の列 'CreatedBy'は、インデックスのキー列として使用するには無効なタイプです。
通常、VARCHAR(Max)を使用するとこのエラーが発生します:
[Column(TypeName = "VARCHAR")]
[StringLength(n)]
[Index]
public string CreatedBy { set; get; }
nは1〜450です。
EntityTypeConfigurationまたはmappingsを使用する場合:
public class MyPocoEntitiyTypeConfig<T> : EntityTypeConfiguration<T> where T:class
{
}
public class MyPocoEnt
{
public virtual string MyProp { get; set; }
}
public class MyPocoEntMapping : MyPocoEntitiyTypeConfig<MyPocoEnt>
{
public MyPocoEntMapping()
{
Property(x => x.MyProp).HasMaxLength(300);
Property(x => x.MyProp).HasColumnAnnotation("Index", new IndexAnnotation(new IndexAttribute("MyProp") { IsUnique = true }));
}
}
}