请阅读 这里这里 快速了解我的问题并准确了解我所说的 Ajax 模型绑定的含义。

为了允许来自 javascript 的模型绑定而使外键字段可为空是一个坏主意吗?

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

public ActionResult Create(Person personToCreate)
{
    //Create person here
}

如果 Person 有一个 Pet 对象是数据库中的外键,您不能传递 Pet 对象以及来自 ajax 调用的其他数据。所以除非 Pet 在数据库中可以为空,绑定到 Person 行不通的。

所以我想知道的是...为了进行模型绑定, 我应该/可以清空我无法从 javascript 传递的数据库字段吗? 或者我是否必须创建一个自定义模型绑定器并绑定到对象的“扁平”版本才能遵循最佳实践?对象的扁平版本示例:

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

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

有帮助吗?

解决方案

我读了您链接什么,贴出来,我真的不能想到一个很好的解决了我的头顶部,但改变基础数据库对AJAX的缘故整体概念让我不舒服。我知道这是不是一个伟大的答案,我和几个EF的设计问题苦苦挣扎,现在我自己也有过,当我一直很想来修改数据库模型的缘故好几次,但这样做,一直来回咬我过去。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top