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 }
}
});