【发布时间】:2012-12-28 04:06:08
【问题描述】:
我每次运行应用程序时都会显示此错误消息。我正在使用实体Framework 5: Code First
这是错误信息,
System.NotSupportedException: Model compatibility cannot be checked because the database does not contain model metadata. Model compatibility can only be checked for databases created using Code First or Code First Migrations.
at System.Data.Entity.Internal.ModelCompatibilityChecker.CompatibleWithModel(InternalContext internalContext, ModelHashCalculator modelHashCalculator, Boolean throwIfNoMetadata)
at System.Data.Entity.Internal.InternalContext.CompatibleWithModel(Boolean throwIfNoMetadata)
at System.Data.Entity.Database.CompatibleWithModel(Boolean throwIfNoMetadata)
at System.Data.Entity.DropCreateDatabaseIfModelChanges`1.InitializeDatabase(TContext context)
at System.Data.Entity.Database.<>c__DisplayClass2`1.<SetInitializerInternal>b__0(DbContext c)
at System.Data.Entity.Internal.InternalContext.<>c__DisplayClass8.<PerformDatabaseInitialization>b__6()
at System.Data.Entity.Internal.InternalContext.PerformInitializationAction(Action action)
at System.Data.Entity.Internal.InternalContext.PerformDatabaseInitialization()
at System.Data.Entity.Internal.LazyInternalContext.<InitializeDatabase>b__4(InternalContext c)
at System.Data.Entity.Internal.RetryAction`1.PerformAction(TInput input)
at System.Data.Entity.Internal.LazyInternalContext.InitializeDatabaseAction(Action`1 action)
at System.Data.Entity.Internal.LazyInternalContext.InitializeDatabase()
at System.Data.Entity.Internal.InternalContext.Initialize()
at System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType)
at System.Data.Entity.Internal.Linq.InternalSet`1.Initialize()
at System.Data.Entity.Internal.Linq.InternalSet`1.get_InternalContext()
at System.Data.Entity.Internal.Linq.InternalSet`1.ActOnSet(Action action, EntityState newState, Object entity, String methodName)
at System.Data.Entity.Internal.Linq.InternalSet`1.Add(Object entity)
at System.Data.Entity.DbSet`1.Add(TEntity entity)
at LaundryService_DEMO.frmMain.btnCreate_Click(Object sender, EventArgs e) in d:\MyDocs\Visual Studio 2012\Projects\LaundryService_DEMO\LaundryService_DEMO\frmMain.cs:line 39
当我创建一个名为 invoice 的实体时,这个错误就开始了。这是实体的完整代码,
public class Invoice
{
public string InvoiceID { get; set; }
public string CustomerID { get; set; }
public string UserID { get; set; }
public decimal TotalAmount { get; set; }
public DateTime TransactionDate { get; set; }
public DateTime PaymentDate { get; set; }
public Customer CustomerField { get; set; }
public SystemUser SystemUserField { get; set; }
}
public class InvoiceMap : EntityTypeConfiguration<Invoice>
{
public InvoiceMap()
{
// Primary Key
this.HasKey(x => x.InvoiceID);
// Property(ies) and Mapping(s)
this.ToTable("Invoice");
this.Property(x => x.InvoiceID)
.IsRequired()
.HasMaxLength(15)
.HasColumnName("InvoiceID")
.HasColumnType("nVarchar");
this.Property(x => x.CustomerID)
.IsRequired()
.HasMaxLength(15)
.HasColumnName("CustomerID")
.HasColumnType("nVarchar");
this.Property(x => x.UserID)
.IsRequired()
.HasMaxLength(15)
.HasColumnName("UserID")
.HasColumnType("nVarchar");
this.Property(x => x.TotalAmount)
.IsRequired()
.HasColumnName("TotalAmount")
.HasColumnType("decimal");
this.Property(x => x.TransactionDate)
.IsRequired()
.HasColumnName("TransactionDate")
.HasColumnType("datetime");
this.Property(x => x.PaymentDate)
.IsOptional()
.HasColumnName("PaymentDate")
.HasColumnType("datetime");
// Relationship
this.HasRequired(x => x.CustomerField)
.WithMany(x => x.InvoiceCollection)
.HasForeignKey(y => y.CustomerID);
this.HasRequired(x => x.SystemUserField)
.WithMany(x => x.InvoiceCollection)
.HasForeignKey(y => y.UserID);
}
}
为了复制应用程序,我包含了项目文件available for download。所以这个问题不会充满代码。
如果我在问题中遗漏了一些细节,请发表评论,以便我将其包括在内。
【问题讨论】:
标签: c# .net entity-framework entity-framework-5