我定义了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代码?
提前致谢。
答案 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