从我的角度来看,我想在进行 ajax 调用时保持模型绑定。我正在使用jquery ajax进行调用,仅作为示例 - 这是我想从 ajax 调用的控制器方法:
public ActionResult Create(Person personToCreate) {
//Create person here
}
如您所见,此方法依赖于Model Binding。这使该方法更加简洁......但是,这意味着当 ajax 进行调用时,它必须提供数据库中不可为空的所有变量。
因此,如果我有一个名为的表Person
,其中包含变量:
firstName varchar(25) not-null
lastName varchar(25) not-null
myPet int not-null <-- This is a foreign key
然后,创建的实体框架类Person
将类似于:
public class Person {
public string firstName { get; set; }
public string lastName { get; set; }
public Pet myPet { get; set; }
}
由于没有一个变量可以为空(如 DB 中所指定),这意味着 ajax 调用必须提供一个string firstName
, string lastName
, Pet myPet
。但是javascript不能提供宠物...
所以我只有两个选择(我知道):
允许 myPet 在数据库中为空
创建一个“更扁平”的类来表示不需要宠物对象的 Person...
IE:
public class SimplePerson {
public string firstName { get; set; }
public string lastName { get; set; }
public string myPetName { get; set; }
}
第一个选项的问题是,必须修改数据库似乎很奇怪......肯定有问题,因为它允许做不应该的事情......
第二个选项的问题是我有很多类,并且为每个类编写重复的类似乎很广泛,只是为了避免这种情况......如果我有 30 个类,那将是 30 个重复的类,我必须创建以允许模型绑定。
谁能想到任何更好的选择,或者就为什么一种选择会比另一种更好进行推理?