C# 是否有一种方法可以使属性成为必需的,但只用于前端而不用于数据库?
假设我有一处房产:C# 是否有一种方法可以使属性成为必需的,但只用于前端而不用于数据库?,c#,asp.net-mvc,entity-framework,C#,Asp.net Mvc,Entity Framework,假设我有一处房产: class Test { [Required] public string Toot { get; set; } } 有了Required,我的数据库中就不允许null了。 我实际上不希望那个限制,但我不希望从现在起它永远是空的 有没有办法只让前端输入需要它 我意识到我可以做到这一点: class Test { [Required] public string Toot { get; set; } [Required
class Test
{
[Required]
public string Toot { get; set; }
}
有了Required,我的数据库中就不允许null了。
我实际上不希望那个限制,但我不希望从现在起它永远是空的
有没有办法只让前端输入需要它
我意识到我可以做到这一点:
class Test
{
[Required]
public string Toot { get; set; }
[Required]
[Display( Name = "Toot" )]
public string TootForView
{
get
{
return this.Toot ;
}
set
{
if(this.Toot != value)
{
this.Toot = value;
}
}
}
}
尝试告诉EF允许列为空:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<SomeObject>().Property(m => m.somefield).IsOptional();
base.OnModelCreating(modelBuilder);
}
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
modelBuilder.Entity().Property(m=>m.somefield.isoOptional();
基于模型创建(modelBuilder);
}
这是从
DbContext
继承的对象中应该包含的代码。只是好奇:为什么需要不保存的必需属性?这是旧数据的问题。。。我们希望将来需要Toots,但对于旧数据。。我们不在乎。你有一个视图模型吗?或者你直接在视图中使用EF实体吗?直接在视图中。我一直担心重新映射会导致太多的工作,也会减慢进程。我从那本专业的ASP net MVC书中了解到了这一点。你是否考虑过从一开始就解决它?在将这些现有模型附加到新模型时,有没有一种方法可以做到这一点。例如,我有一个TooToo
类,需要将其与测试
类关联。。。但是当运行savechanges
时,它会重新验证Toot
属性,并且不允许我附加并保存新的TooToo
类