问题描述
我已经在sql Server数据库中创建了对象,并在.NET Core 3.1项目中为数据库设置了脚手架。 ModelBuilder引发异常。为了清楚起见,下面仅显示两个表的代码。
CREATE TABLE dbo.MirnaObrade
(
ID int NOT NULL,Name nvarchar(50) NOT NULL,Type nvarchar(50) NOT NULL,System bit NOT NULL,Interval int NOT NULL,CronSchedule nvarchar(50) NOT NULL
) ON [PRIMARY]
GO
CREATE UNIQUE NONCLUSTERED INDEX PK_MirnaObrade ON dbo.MirnaObrade
(
ID
) WITH( STATISTICS_norECOmpuTE = OFF,IGnorE_DUP_KEY = OFF,ALLOW_ROW_LOCKS = ON,ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
CREATE TABLE dbo.MirnaStatusiObrada
(
ID int NOT NULL,Active bit NOT NULL DEFAULT 0,Status int NOT NULL DEFAULT 0,LastExec datetime,NextExec datetime
) ON [PRIMARY]
GO
CREATE UNIQUE NONCLUSTERED INDEX PK_MirnaStatusiObrada ON dbo.MirnaStatusiObrada
(
ID
) WITH( STATISTICS_norECOmpuTE = OFF,ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
ALTER TABLE dbo.MirnaStatusiObrada ADD CONSTRAINT
FK_MirnaStatusiObrada_MirnaObrade FOREIGN KEY
(
ID
) REFERENCES dbo.MirnaObrade
(
ID
) ON UPDATE NO ACTION
ON DELETE NO ACTION
GO
-- dbo.MirnaStatusiObrada.ID is foreign key to dbo.MirnaObrade.ID
生成的类
public partial class MirnaObrade
{
public int Id { get; set; }
public string Name { get; set; }
public string Type { get; set; }
public bool System { get; set; }
public int Interval { get; set; }
public string CronSchedule { get; set; }
}
public partial class MirnaStatusiObrada
{
public int Id { get; set; }
public bool Active { get; set; }
public int Status { get; set; }
public DateTime? LastExec { get; set; }
public DateTime? NextExec { get; set; }
public virtual MirnaObrade IdNavigation { get; set; }
}
模型构建器
//.......
modelBuilder.Entity<MirnaObrade>(entity =>
{
entity.HasNoKey();
entity.HasIndex(e => e.Id)
.HasName("PK_MirnaObrade")
.IsUnique();
entity.Property(e => e.CronSchedule)
.Isrequired()
.HasMaxLength(50);
entity.Property(e => e.Id).HasColumnName("ID");
entity.Property(e => e.Name)
.Isrequired()
.HasMaxLength(50);
entity.Property(e => e.Type)
.Isrequired()
.HasMaxLength(50);
});
modelBuilder.Entity<MirnaStatusiObrada>(entity =>
{
entity.HasNoKey();
entity.HasIndex(e => e.Id)
.HasName("PK_MirnaStatusiObrada")
.IsUnique();
entity.Property(e => e.Id).HasColumnName("ID");
entity.Property(e => e.LastExec).HasColumnType("datetime");
entity.Property(e => e.NextExec).HasColumnType("datetime");
entity.HasOne(d => d.IdNavigation)
.WithOne()
.HasPrincipalKey<MirnaObrade>(p => p.Id)
.HasForeignKey<MirnaStatusiObrada>(d => d.Id)
.OnDelete(DeleteBehavior.ClientSetNull)
.HasConstraintName("FK_MirnaStatusiObrada_MirnaObrade");
});
//.......
执行模型构建器(访问表中的数据)时, entity.HasOne 将引发异常 System.NullReferenceException:'对象引用未设置为对象的实例。 '
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)