我向MVC 5 Web API项目添加了一个新实体,但无法使用它与我现有的SQL一起工作数据库。我现有的代码使用工作单元工厂和存储库模式从数据库读取和写入,所以我知道代码工作。没有edmx文件,所以我相信代码最初是使用代码编写的。这是我迄今采取的步骤。实体框架6.1.1无法获得新实体与Unity Work of Factory和Repository模式兼容
步骤1)增加了新的实体,以我的实体文件夹 步骤2)更新的DbContext文件 步骤3)更新UnitOfWork.cs文件 步骤4)手动创建的脚本使用步骤 5个新的SQL表)的添加以下代码到我的Web API服务
using (var uow = _unitOfWorkFactory.Create())
{
//Code to create newentity object
uow.newEntityRepository.Insert(newentity);
await uow.SaveChangesAsync();
}
我没有收到错误。插入操作不会将记录添加到数据库。
我已经使用EntityTypeConfiguration创建了一个实体表映射,我使用OnModelCreating Override调用它。
EntityTypeConfiguration
public class NewEntityMap : EntityTypeConfiguration<NewEntity>
{
public NewEntityMap() : base()
{
// Primary Key
this.HasKey(t => t.Id);
// Table & Column Mappings
this.ToTable("NewEntity", "dbo");
this.Property(t => t.Id).HasColumnName("Id");
this.Property(t => t.Created).HasColumnName("Created");
this.Property(t => t.OfferId).HasColumnName("OfferId");
this.Property(t => t.MerchantId).HasColumnName("MerchantId");
this.Property(t => t.ConsumerId).HasColumnName("ConsumerId");
this.Property(t => t.SMSMessage).HasColumnName("SMSMessage");
this.Property(t => t.SendSMS).HasColumnName("SendSMS");
this.Property(t => t.EmailMessage).HasColumnName("EmailMessage");
this.Property(t => t.SendEmail).HasColumnName("SendEmail");
this.Property(t => t.Source).HasColumnName("Source");
this.Property(t => t.FromSMSNumber).HasColumnName("FromSMSNumber");
}
}
OnModelCreating
modelBuilder.Configurations.Add(new newEntityMap());
我仍然不能得到记录在表更新。
任何想法?提前致谢!
它看起来像基于这个堆栈溢出的问题,实体可以手动映射,而无需进行数据库迁移。 http://stackoverflow.com/questions/20243796/code-first-mapping-entities-to-existing-database-tables –
这篇博客文章甚至没有提到数据库迁移的必要性。 http://cpratt.co/entity-framework-code-first-with-existing-database/ –