いいえ、EF 5ではそれを行うことはできません。あなたのリンクは、EF6の将来の機能です。こちらをご覧ください
しかし、リフレクションを使用すると簡単にそれを行うことができます。再利用性のために、の拡張メソッドとしてそれを作成できDbModelBuilder
ます。少し遅くなりますが、ケースは解決します。ここであなたができること:
public static class MyCustomNamingConvention
{
public static void ToMyDatabaseNamingConvention(
this DbModelBuilder mb, IEnumerable<Type> entities)
{
foreach (var entity in entities)
{
var mi = typeof(MyCustomNamingConvention)
.GetMethod("MyNamingConvention")
.MakeGenericMethod(entity);
mi.Invoke(null, new object[] { mb });
}
}
public static void MyNamingConvention<T>
(DbModelBuilder mb) where T : Entity
{
var tableName = typeof(T).Name.Replace("Entity", "");
mb.Entity<T>().HasKey(x => x.Id);
mb.Entity<T>().Property(x => x.Id).HasColumnName(tableName + "Id");
mb.Entity<T>().ToTable(tableName);
}
}
DBContextonOnModelCreating
メソッドで使用するだけです
protected override void OnModelCreating(DbModelBuilder mb)
{
base.OnModelCreating(mb);
mb.ToMyDatabaseNamingConvention(GetEntities());
}
ノート:
- の適切な名前空間を追加することを忘れないでください
MyCustomNamingConvention
。
GetEntities()
エンティティを反復処理するメソッドです(Entity
基本クラスをスキップすることを忘れないでください)