gpt4 book ai didi

c# - Entity Framework 5 代码优先配置封装

转载 作者:太空宇宙 更新时间:2023-11-03 20:21:02 25 4
gpt4 key购买 nike

我想知道(我讨厌使用“最佳实践”这个词)——但这是处理配置的好方法,因为它封装了 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
}
}

我喜欢这个,因为它让我在如何实例化配置方面更加灵活。

最佳答案

这取决于。到目前为止,我可以说我不关心数据库生成。它很好并且具有我不关心的优势(平台无关)。它限制了完全使用 SQL Server - 所以它回到了数据库项目。

这是一个妥协的世界,而且 - 抱歉 - 最佳实践伴随着大量的限制。

关于c# - Entity Framework 5 代码优先配置封装,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13555578/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com