1

我定义了 Client 类。我还有使用 Fluent API 定义列名的 Mapping\ClientMap.cs 文件。但是,我不确定如何“调用”它,因为我没有看到正在执行的 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 代码?

提前致谢。

4

2 回答 2

2

您应该将映射代码直接放在OnModelCreating方法中(这是您可以覆盖的虚拟方法DbContext),或者将其放在单独的配置类中,然后从该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();
    }
}
于 2012-10-21T18:43:09.290 回答
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

于 2012-10-21T18:43:22.730 回答