我正在尝试将实体连接到现有数据库,但是很难弄清楚为什么出现以下错误:
自创建数据库以来,支持“ RPSContext”上下文的模型已更改。考虑使用“代码优先迁移”来更新数据库(http://go.microsoft.com/fwlink/?LinkId=238269)。
如前所述,我正在连接到现有数据库。因此,我不需要实体来修改结构。我只想能够选择/插入/更新/等。
public class ProductAttributePriceAdjustment
{
[Key]
public int AdjustmentId { get; set; }
public int StoreProductId { get; set; }
public int StoreId { get; set; }
public string ProductId { get; set; }
public int ProductSizeId { get; set; }
public decimal Adjustment { get; set; }
public int PointsAdjustment { get; set; }
public int ProductColorID { get; set; }
}
public class RPSContext : DbContext
{
public RPSContext() : base("ApplicationConnection")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<ProductAttributePriceAdjustment>().ToTable("ProductAttributePriceAdjustment");
}
public DbSet<ProductAttributePriceAdjustment> PriceAdjustments { get; set; }
}
几乎每次我看到此错误都是因为数据库架构和代码期望的架构未同步。在某些时候,架构发生了变化,您没有在代码中反映出所做的更改。
例如,您有一个db列Adjustment
,这是一种允许使用null值的money类型。但是,在您的c#类中,它的类型为decimal
,不接受空值。还有一些其他属性或者不存在,或者类型不匹配。
好消息是,如果您使用数据库优先,则修复它应该真的很容易。只需进入.edmx文件,右键单击空白区域,然后选择“从数据库更新模型”,就很简单。
从那里,您可以添加,更新或删除数据库中找到的项目。保存模型文件后,VS将重新创建模型类,并且应将其同步。
请注意:如果重命名数据库列,VS不会从模型中删除旧的列名称,并且会抛出错误,直到您从代码模型中手动删除该列为止。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句