【发布时间】:2012-11-25 21:17:30
【问题描述】:
我想知道(而且我讨厌使用“最佳实践”这个词) - 但这是一种处理配置的好方法,因为它封装了 AAA 的配置?
我看到很多示例,其中OnModelCreating 是用于创建数据库的大量指令列表,而冗长的方法告诉我某些事情并不安静。
public class MyContext : DbContext
{
public MyContext() : base("name=MyDb") { }
public DbSet<AAA> AAAs { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
modelBuilder.Configurations.Add(new AAA.Configuration());
}
}
还有一个可以配置的类
public class AAA
{
[Key]
public int Id { get; set; }
[Required]
public string Details { get; set; }
internal class Configuration : EntityTypeConfiguration<AAA>
{
public Configuration()
{
// Set all the funky stuff here
}
}
}
我知道可能没有正确的方法。在我投入大量时间和眼泪之前,我正在寻找一个原因,为什么这可能是世界上最糟糕的想法,或者是否有办法做类似的事情?
编辑
一位同事建议将此作为使用静态属性的替代方法
public class AAA
{
[Key]
public int Id { get; set; }
[Required]
public string Details { get; set; }
public static EntityTypeConfiguration<AAA> Configuration
{
get { return new AAAConfiguration(); }
}
}
internal class AAAConfiguration : EntityTypeConfiguration<AAA>
{
public AAAConfiguration()
{
// Set all the funky stuff here
}
}
我喜欢这个,因为它在配置实例化方面给了我更多的灵活性。
【问题讨论】:
标签: c# ef-code-first entity-framework-5