私のアプリケーションでは、コードで最初にアプローチするEntityFrameworkを使用しています。私はASP.NET 4.6 MVCとVS2015でEF7を使用しています。だから、エンティティフレームワークコード第1セット:固有のキー制約が機能していない
public class CustomerContext : DbContext
{
public CustomerContext()
{
Database.EnsureCreated();
}
public DbSet<Customer> Customers { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder options)
{
var connection = System.Configuration.ConfigurationManager.ConnectionStrings["DbConnectionString"].ConnectionString;
options.UseSqlServer(connection).UseRowNumberForPaging();
}
}
、モデルクラスからデータベース・テーブルに私はのEmailAddress列に一意の制約を設定したいことがわかりますのEmailAddressを意味:私のコンテキストファイルは、以下のようなものです
public class Customer
{
public int CustomerID { get; set; }
[StringLength(100)]
[Required]
public string FirstName { get; set; }
[StringLength(100)]
[Required]
public string LastName { get; set; }
[Required]
[EmailAddress(ErrorMessage = "Please enter valid Email Address.")]
[StringLength(100)]
[Index("IX_EA", IsUnique = true)]
public string EmailAddress { get; set; }
}
:私のモデルクラスは、以下のようなものですフィールドには重複した値が含まれている必要があります(電子メールアドレスはテーブル内に繰り返さないでください)。しかし、私がプロジェクトデータベースを実行すると、正常に作成されます。そのユニーク制約は存在しません。なぜ私はEmailAddressフィールドにその制約を設定していないのですか?
EntityFrameworkのコードの最初のアプローチを使用して、フィールドに固有の制約を設定するのを手伝ってください。 EF7 Documentationから
それが一意のインデックスを作成した場合、 ' –
はあなたがCONSTRAINTについて何を気にしていますか?' MAXLENGTH(200)を設定してくださいとにかくインデックスは「より良い」と強制されます。インデックスは、インデックスを上に置かないと便利です。そこにインデックスはありますか? – TomTom
それは動作しませんでした。そして、私は長さが発行することができないと思う – iDipa