EF Core(代码优先):无法将模型保存到数据库 - > SqlException列名无效

时间:2017-12-10 01:52:00

标签: entity-framework asp.net-web-api asp.net-core ef-code-first

我正在使用EF Core(代码优先和迁移)。

当我尝试使用以下方法将模型(商品)保存到数据库时简单:

_context.Offers.Add(offer);
await _context.SaveChangesAsync();

我从实体框架中得到一个例外:

  

SqlException:列名无效' UserGroupId'

但我的UserGroupId课程中有 NO 这样的Offer属性。我从Offer模型类中删除了它。

数据库表中还有 NO UserGroupId列。

当我检查我的日志时,我看到Entity Framework使用此UserGroupId列生成一个SQL INSERT语句。

问题:

是否有人知道Entity Framework对此UserGroupId ghost列有任何引用?

感谢您提供反馈或提示。

奥利弗

更新1

现在,在我做了激进的步骤后,它变得非常奇怪。

  1. 我删除了整个数据库
  2. 我还删除了整个Migrations-Folder
  3. 我编译了整个解决方案(成功)
  4. 然后我使用以下命令添加了一个新的迁移:`add migration initDb
  5. 然后我用:`update-database
  6. 创建了数据库

    最后我再次检查了生成的Offers表。

    我看到的是,UserGroupId列仍在此表格中再次生成...

    EF中有一些魔法,我必须知道吗?为什么EF仍会生成此UserGroupId列?

    更新2

    这是我的优惠模型。我认为这很简单,我看不到 原因,为什么UserGroupId生成到表中。 UserGroupId是Offer模型类中的错误属性。 我删除了它。

    namespace Common.Models
    {
        public class Offer
        {
            public int Id { get; set; }
    
            public string Name { get; set; }
            public string Description { get; set; }
            public DateTime ValidFrom { get; set; }
    
            public DateTime ValidTo { get; set; }
            public bool PickupLocationVerified { get; set; }
            public string PickupStreet { get; set; }
            public string PickupPlace { get; set; }
            public string PickupZip { get; set; }
            public Country PickupCountry { get; set; }
            public string Longitude { get; set; }
            public string Latitude { get; set; }
            public Order Order { get; set; }
            public User Supplier { get; set; }
    
            public int SupplierId { get; set; }
            public SupplierRating SupplierRating { get; set; }
    
            public int? SupplierRatingId { get; set; }
            public ConsumerRating ConsumerRating { get; set; }
    
            public int? ConsumerRatingId { get; set; }
    
            public List<Message> Messages { get; set; }
            public List<Image> Images { get; set; }
            public List<Article> Articles { get; set; }
    
            public bool Active { get; set; }
    
            public DateTime CreateDate { get; set; }
    
            public DateTime UpdateDate { get; set; }
    
            public Group Group { get; set; }
        }
    }
    

1 个答案:

答案 0 :(得分:0)

我找到了答案。 问题出在UserGroup模型类中。

仍有错误的财产:

public List<Offer> Offers { get; set; }

老实说,我不敢相信,我之前没有看到它。

谢谢大家并对不起。