Sql server 为了简化来自Ajax的模型绑定,允许数据库表中有空字段是一种不好的做法吗?

Sql server 为了简化来自Ajax的模型绑定,允许数据库表中有空字段是一种不好的做法吗?,sql-server,ajax,entity-framework,model-binding,Sql Server,Ajax,Entity Framework,Model Binding,请阅读并快速概述我的问题,并确切了解我所说的Ajax模型绑定的含义 让外键字段为空以允许javascript的模型绑定是一个坏主意吗 例如,我们希望在ajax调用期间绑定到Person对象以。。。(Person类是从实体框架创建的) 如果Person有一个Pet对象是db中的外键,则不能将Pet对象与来自ajax调用的其他数据一起传递。因此,除非Pet在数据库中可为空,否则绑定到Person将无法工作 所以我想知道的是。。。为了进行模型绑定,我是否应该/可以将无法从javascript传递的db

请阅读并快速概述我的问题,并确切了解我所说的Ajax模型绑定的含义

让外键字段为空以允许javascript的模型绑定是一个坏主意吗

例如,我们希望在ajax调用期间绑定到Person对象以。。。(Person类是从实体框架创建的)

如果
Person
有一个
Pet
对象是db中的外键,则不能将
Pet
对象与来自ajax调用的其他数据一起传递。因此,除非
Pet
在数据库中可为空,否则绑定到
Person
将无法工作

所以我想知道的是。。。为了进行模型绑定,我是否应该/可以将无法从javascript传递的db字段设置为空?或者我是否必须制作一个自定义模型绑定器并绑定到对象的“更平坦”版本以遵循最佳实践?对象的更平坦版本示例:

public class SimplePerson() {
   private string firstName;
   private string lastName;
   private string petName;
}

我问这个问题的原因是因为我的实体框架创建的很多类都包含外键,这意味着我需要创建几乎所有这些类的平面副本,这似乎违背了整个原则。

我仔细阅读了你链接和发布的内容,我真的想不出一个好的解决方案,但是为了AJAX而改变底层数据库的整个概念让我感到不舒服。我知道这不是一个很好的答案,我自己现在也在努力解决几个EF设计问题,并且有好几次我试图为了模型而修改数据库,但这样做在过去总是会让我头疼。

Ya,我同意数据库似乎不是正确的解决方案,这就是我问的原因。允许不应该为空的东西只是在问问题,我想为此得到补偿。。。因为如果我自己或其他任何人将来使用数据库,他们可能会犯错误,DB最终也不会阻止它。另一方面,覆盖所有类的代码量似乎非常广泛。我希望可能是中间人,或是有人给我“确定”以使那些DB变量为空。只有一个答案?还有人对此有意见吗?
public class SimplePerson() {
   private string firstName;
   private string lastName;
   private string petName;
}