我一直被 DBContext 中 OnModelCreating() 的以下异常所困扰,并努力寻找原因或解决方案。网上也找不到太多帮助。
{System.MissingMethodException: Method not found: 'System.Nullable`1<Int32> Models.Application.get_AddrSeqNum()'. at Data.Configuration.ApplicationConfiguration..ctor()
请问有什么帮助或想法吗?
细节:
我有两种实体类型“应用程序”和“组织”及其实体类型配置,如下所示:
public class Application
{
public int ApplId { get; set; }
public int? OrganizationId { get; set; } // Compsite FK (maps to ExternalId in Organization)
public int? AddrSeqNum { get; set; } // Compsite FK (maps to AddrSeqNum)
public virtual Organization Organization { get; set; }
}
public class Organization
{
public int Id { get; set; }
/// <summary>
/// Organization ID
/// </summary>
public int ExternalId { get; set; }
public int AddrSeqNum { get; set; }
}
public class ApplicationConfiguration : EntityTypeConfiguration<Application>
{
ToTable("Application");
HasKey(e => e.ApplId)
.Property(e => e.ApplId)
.HasColumnName("appl_id")
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
Property(e => e.AddrSeqNum)
.HasColumnName("addr_seq_num");
// Relationship
HasOptional(e => e.Organization)
.WithMany()
.HasForeignKey(e => new { e.OrganizationId, e.AddrSeqNum });
}
public class OrganizationConfiguration : EntityTypeConfiguration<Organization>
{
public OrganizationConfiguration()
{
ToTable("Organization");
HasKey(e => new { e.ExternalId, e.AddrSeqNum }); // Compsite Unique key in table
Property(e => e.ExternalId)
.HasColumnName("external_id");
Property(e => e.AddrSeqNum)
.HasColumnName("addr_sequence");
Property(e => e.Id)
.HasColumnName("Id") // Primary key (auto increment)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
}
}
数据库上下文:
public partial class AppDbContext : DbContext
{
public AppDbContext ()
{
Configuration.LazyLoadingEnabled = true;
Configuration.ProxyCreationEnabled = false;
//Configuration.AutoDetectChangesEnabled = false;
DbInterception.Add(new FtsInterceptor());
Database.Log = (msg) => Logger.Debug(msg);
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
modelBuilder.Configurations // <<- Exception from here
.Add(new ApplicationConfiguration())
.Add(new OrganizationConfiguration())
base.OnModelCreating(modelBuilder);
}
}