之前我曾多次使用过这段代码,而且之前总是有用,但在这个特定的项目中,我无法获得Entity Framework来构建我的数据库。
当我在DbContext类中检查Autos时,我发现了这个:
创建模型时无法使用上下文。如果在OnModelCreating方法中使用上下文,或者同时由多个线程访问相同的上下文实例,则可能抛出此异常。
这是我的OnModelCreating:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Configurations.Add(new CompanyDBConfiguration());
modelBuilder.Configurations.Add(new ClientDBConfiguration());
modelBuilder.Configurations.Add(new QuoteDBConfiguration());
modelBuilder.Configurations.Add(new RoleDBConfiguration());
modelBuilder.Configurations.Add(new UserDBConfiguration());
modelBuilder.Configurations.Add(new InvoiceDBConfiguration());
modelBuilder.Configurations.Add(new JobDBConfiguration());
modelBuilder.Configurations.Add(new JobStatusDBConfiguration());
}
以下是其中一个配置的示例:
public class CompanyDBConfiguration : DBBaseObject<Company>
{
public CompanyDBConfiguration()
: base()
{
Property(p => p.Companame)
.HasColumnName("sCompanyname")
.IsRequired();
Property(p => p.ContactPerson)
.HasColumnName("sContactPerson")
.IsRequired();
Property(p => p.ContactNumber)
.HasColumnName("sContactNumber")
.IsRequired();
Property(p => p.EmailAddress)
.HasColumnName("sEmailAddress")
.IsRequired();
Property(p => p.PhysicalAddress)
.HasColumnName("sPhysicalAddres")
.IsRequired();
Property(p => p.LicenseKey)
.HasColumnName("sLicenseKey")
.IsRequired();
Property(p => p.LicenseDate)
.HasColumnName("dtLicenseDate")
.HasColumnType("datetime")
.IsRequired();
ToTable("Companies");
}
}
有谁能帮我理解这里发生了什么?正如我所说,它已经在我所做的每一个项目中都有效,所以为什么这里没有这个呢?
提前致谢!
答案 0 :(得分:0)
ToTable是什么(&#34;公司&#34;);办?
我非常确定问题出在哪里 - 除了创建数据上下文之外,您不应该执行额外的工作,尤其是当您在该方法中调用上下文时。