模型类和映射

时间:2012-10-21 18:38:43

标签: entity-framework fluent

我定义了Client类。我还有Mapping \ ClientMap.cs文件,它使用Fluent API定义列名。但是,我不知道如何“调用”它,因为我没有看到正在执行ClientMap.cs代码。

我也有:

namespace CardNumbers.Data
{
    public class Repository : DbContext, IRepository
    {
        public DbSet<Client> Clients { get; set; }
        public DbSet<ClientOrder> ClientOrders { get; set; }
        public DbSet<Reorder> Reorders { get; set; }
        public DbSet<Operator> Operators { get; set; }

我知道这不是一个很好的做法,但这就是我们如何与教师一起构建应用程序。

所以,我的问题是 - 我需要添加什么来确保在运行时调用Fluent API代码?

提前致谢。

2 个答案:

答案 0 :(得分:2)

您应该将映射代码直接放在OnModelCreating方法中(这是可以在DbContext上覆盖的虚方法),或者将其放在一个sepearte配置类中,然后从该方法调用OnModelCreating方法。

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<Client>().Property(p => p.Name).IsRequired();
}

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

其他地方:

public class ClientConfiguration : EntityTypeConfiguration<Client>
{
    public ClientConfiguration()
    {          
        this.Property(p => p.Name).IsRequired();
    }
}

答案 1 :(得分:1)

应该在“Repository”类的底部添加流畅的映射,如下所示

protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        //add fluent api code
    }

我引用您的存储库的原因是您并没有真正实现存储库模式。您应该将此定义为特定的DbContext,然后拥有一个可以采用多个上下文的存储库。请参阅这篇关于实施存储库的文章:http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/implementing-the-repository-and-unit-of-work-patterns-in-an-asp-net-mvc-application