Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MVC种子不会将数据放入数据库中_C#_Asp.net Mvc_Entity Framework - Fatal编程技术网

C# MVC种子不会将数据放入数据库中

C# MVC种子不会将数据放入数据库中,c#,asp.net-mvc,entity-framework,C#,Asp.net Mvc,Entity Framework,我有两张表,它们之间有关系 以下是我的模型: public class Locations { [Key] public int LocationID { get; set; } [Required(ErrorMessage = "This field is required!")] [MaxLength(50, ErrorMessage = "The name is too long. Max. 50 characters allowed!")] [Display(Na

我有两张表,它们之间有关系

以下是我的模型:

public  class Locations
{
  [Key]
  public int LocationID { get; set; }

  [Required(ErrorMessage = "This field is required!")]
  [MaxLength(50, ErrorMessage = "The name is too long. Max. 50 characters allowed!")]
  [Display(Name = "Location name:")]
  public string Name { get; set; }

  public int Position { get; set; }

  public virtual LocationType LocationType { get; set; }

}

表定义:

CREATE TABLE [dbo].[Locations] (
[LocationID]                  INT           IDENTITY (1, 1) NOT NULL,
[Name]                        NVARCHAR (50) NOT NULL,
[Position]                    INT           NOT NULL,
[LocationType_LocationTypeID] INT           NULL,
CONSTRAINT [PK_dbo.Locations] PRIMARY KEY CLUSTERED ([LocationID] ASC),
CONSTRAINT [FK_dbo.Locations_dbo.LocationTypes_LocationType_LocationTypeID] FOREIGN KEY ([LocationType_LocationTypeID]) REFERENCES [dbo].[LocationTypes] ([LocationTypeID])
);

CREATE TABLE [dbo].[LocationTypes] (
[LocationTypeID]    INT           IDENTITY (1, 1) NOT NULL,
[Name]              NVARCHAR (25) NOT NULL,
[Position]          INT           NOT NULL,
[HasChoicesOrInput] INT           NOT NULL,
CONSTRAINT [PK_dbo.LocationTypes] PRIMARY KEY CLUSTERED ([LocationTypeID] ASC)
);
当我更新数据库时,我得到一个“对象引用未设置为对象的实例。”错误

为什么??数据库中存在表,关系也存在。
我在这里遗漏了什么?

位置
初始化器

new LocationType
{
  Name = "AAAAA",
  HasChoicesOrInput = 1,
  Position = 1,
  Locations = { new Locations { Name = "1111111", Position = 1 },
                new Locations { Name = "2222222", Position = 2 }
            }
});
不创建
位置
集合。它调用属性getter来获取现有的
位置
集合,并对其调用
添加
。由于您从未为该属性分配任何内容,因此会得到
NullReferenceException

该语法在C语言规范第7.6.10.2节“对象初始值设定项”中描述:

在等号后指定集合初始值设定项的成员初始值设定项是嵌入式集合的初始化。将初始值设定项中给定的元素添加到字段或属性引用的集合中,而不是将新集合指定给字段或属性。 您应该创建集合的新实例(例如列表或数组),并将其分配给初始值设定项中的
位置
属性:

新位置类型
{
Name=“AAAAA”,
HasChoicesOrInput=1,
位置=1,
位置=新列表
{ 
新位置{Name=“1111111”,位置=1},
新位置{Name=“2222222”,位置=2}
}
});
CREATE TABLE [dbo].[Locations] (
[LocationID]                  INT           IDENTITY (1, 1) NOT NULL,
[Name]                        NVARCHAR (50) NOT NULL,
[Position]                    INT           NOT NULL,
[LocationType_LocationTypeID] INT           NULL,
CONSTRAINT [PK_dbo.Locations] PRIMARY KEY CLUSTERED ([LocationID] ASC),
CONSTRAINT [FK_dbo.Locations_dbo.LocationTypes_LocationType_LocationTypeID] FOREIGN KEY ([LocationType_LocationTypeID]) REFERENCES [dbo].[LocationTypes] ([LocationTypeID])
);

CREATE TABLE [dbo].[LocationTypes] (
[LocationTypeID]    INT           IDENTITY (1, 1) NOT NULL,
[Name]              NVARCHAR (25) NOT NULL,
[Position]          INT           NOT NULL,
[HasChoicesOrInput] INT           NOT NULL,
CONSTRAINT [PK_dbo.LocationTypes] PRIMARY KEY CLUSTERED ([LocationTypeID] ASC)
);
new LocationType
{
  Name = "AAAAA",
  HasChoicesOrInput = 1,
  Position = 1,
  Locations = { new Locations { Name = "1111111", Position = 1 },
                new Locations { Name = "2222222", Position = 2 }
            }
});
new LocationType
{
  Name = "AAAAA",
  HasChoicesOrInput = 1,
  Position = 1,
  Locations = new List<Locations> 
  { 
      new Locations { Name = "1111111", Position = 1 },
      new Locations { Name = "2222222", Position = 2 }
  }
});