gpt4 book ai didi

entity-framework - Entity Framework Code First 是否允许在单独的文件中进行流畅的映射?

转载 作者:行者123 更新时间:2023-12-04 00:11:56 27 4
gpt4 key购买 nike

我正在使用 Entity Framework Code First 开发一个相当大的数据库模式。我更喜欢 Fluent API 而不是 Data Annotations 方法,因为它将我的域对象保留为简单的 POCO。

为了使用 Fluent API,我必须在继承自 DbContext 的类中重写 OnModelCreating。

我不喜欢我所有实体的所有映射都在这种方法中。我以前使用过 FluentNHibernate 之类的东西,每个实体都有自己的映射类。 EF有类似的吗?

我想我可以创建自己的接口(interface)来实现映射类并在 OnModelCreating 方法中调用它们。我可以使用反射或 IoC 来发现它们。我没有特别看到这种方法有什么问题,但我想知道 Entity Framework 是否已经提供了类似这样的东西?

最佳答案

您可以为每个派生自 EntityTypeConfiguration<TEntity> 的实体创建一个配置类。并将这些类放入单独的文件中。在您导出的 DbContext您将这些配置类的实例添加到模型构建器。例子:

public class UserConfiguration : EntityTypeConfiguration<User>
{
public UserConfiguration()
{
HasKey(u => u.UserName);

Property(u => u.UserName)
.HasMaxLength(50)
.IsRequired();

// etc.
}
}

public class RoleConfiguration : EntityTypeConfiguration<Role>
{
public RoleConfiguration()
{
HasKey(r => r.RoleName);

// etc.
}
}

派生上下文:
public class MyContext : DbContext
{
//...

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Configurations.Add(new UserConfiguration());
modelBuilder.Configurations.Add(new RoleConfiguration());
}
}

还有一个 ComplexTypeConfiguration<T>您可以从中派生来配置复杂类型。

关于entity-framework - Entity Framework Code First 是否允许在单独的文件中进行流畅的映射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8319762/

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