尝试创建迁移时未标记为Serializable和NullReferenceException

时间:2019-05-27 11:07:34

标签: c# asp.net-mvc entity-framework

我正在创建一个基本的网上商店应用程序以练习语法。您可以在下面找到我的课程:

型号:

[Table("Items")]
public class ShopItem
{
    public ShopItem()
    {
    }

    public ShopItem(int id, string name, double price)
    {
        Id = id;
        Name = name;
        Price = price;
    }

    [Key]
    public int Id { get; set; }

    [Required(ErrorMessage ="This field is a must")]
    public String Name { get; set; }

    [Required(ErrorMessage = "This field is a must")]
    public double Price { get; set; }
}

IRepository接口:

public interface IRepository<T> where T : class
{
    IEnumerable<T> List { get; }
    T FindById(int id);

    void Update(T entity);

    void Delete(T entity);
}

存储库实现:

public class ShopItemRepository : IRepository<ShopItem>
{

    Models.ShopItemRepository _webshopContext;

    public ShopItemRepository() {
        _webshopContext = new Models.ShopItemRepository();
    }

    public IEnumerable<ShopItem> List => throw new NotImplementedException();

    public ShopItem FindById(int Id) => (from r in _webshopContext.ShopItem where r.Id == Id select r).FirstOrDefault();

    void IRepository<ShopItem>.Update(ShopItem entity)
    {
        _webshopContext.Entry(entity).State = Microsoft.EntityFrameworkCore.EntityState.Modified;
        _webshopContext.SaveChanges();

    }

    void IRepository<ShopItem>.Delete(ShopItem entity)
    {
        _webshopContext.Remove(entity);
        _webshopContext.SaveChanges();
    }

我正在尝试使用

迁移数据库
  

启用迁移

  

添加迁移

命令,但是这样做时,我收到以下错误消息:

  

使用“ 2”个参数调用“ SetData”的异常:在程序集“ Microsoft.VisualStudio.ProjectSystem.VS.Implementation,版本”中键入“ Microsoft.VisualStudio.ProjectSystem.VS.Implementation.Package.Automation.OAProject” = 16.0.0.0,   文化=中性,PublicKeyToken = xxxxxxxxxxxx'未标记为可序列化。”   在C:\ Users \ nagycso.nuget \ packages \ entityframework \ 6.2.0 \ tools \ EntityFramework.psm1:720 char:20   + $ domain.SetData <<<<('project',$ project)       + CategoryInfo:未指定:(:) [],MethodInvocationException       + FullyQualifiedErrorId:DotNetMethodException

     

System.NullReferenceException:对象引用未设置为对象的实例。      在System.Data.Entity.Migrations.Extensions.ProjectExtensions.GetPropertyValue [T](项目项目,字符串propertyName)处      在System.Data.Entity.Migrations.MigrationsDomainCommand.GetFacade(字符串configurationTypeName,布尔useContextWorkingDirectory)      在System.Data.Entity.Migrations.EnableMigrationsCommand.FindContextToEnable(String contextTypeName)处      在System.Data.Entity.Migrations.EnableMigrationsCommand。<> c__DisplayClass2。<。ctor> b__0()      在System.Data.Entity.Migrations.MigrationsDomainCommand.Execute(操作命令)   对象引用未设置为对象的实例。

我知道NullReferenceException是什么,但我仍在努力找出问题所在。我有一些虚拟数据,我已经将它们放入数据库中。

您能帮我找出解决方案吗?

谢谢。

0 个答案:

没有答案