我在DBContext中遇到了来自OnModelCreating()的异常,并努力寻找原因或解决方案。无法在网上找到很多帮助。
{System.MissingMethodException: Method not found: 'System.Nullable`1<Int32> Models.Application.get_AddrSeqNum()'. at Data.Configuration.ApplicationConfiguration..ctor()
请问任何帮助或想法?
我有两种实体类型&#39;应用程序&#39;和&#39;组织&#39;和他们的实体类型配置如下:
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);
}
}
的DbContext:
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);
}
}
答案 0 :(得分:0)
这是一个奇怪的情况,对我的pocos的项目的引用不同步,并且在我构建我的解决方案时没有重建。其中一个项目是面向x86平台的Workflow控制台应用。我为了sln中的所有项目改为AnyCPU。而且神奇地再次工作了。
我试图在我的poco实体的ine中添加一个新的列/属性。
答案 1 :(得分:0)
我也遇到了这个问题,因为我使一个可以为空的数据库列不可为空,而Visual Studio似乎并不想配合这个更改。
删除bin和obj文件夹,以及重建,似乎没有这样做。
作为一种解决方法,我只是让它再次可以为空了。这很有意思,因为我不确定VS在哪里缓存可空的部分 - 当我处于不太紧迫的期限时,这个问题需要回答。 :)