É más práticas para permitir campos nulos para uma tabela DB, a fim de simplificar o modelo de ligação do Ajax?

StackOverflow https://stackoverflow.com/questions/1133556

Pergunta

Por favor, leia aqui e here para ter uma visão geral do meu problema e ver exatamente o que eu quero dizer quando digo Model Binding do Ajax.

seria uma má idéia para tornar os campos de chave estrangeira anulável, a fim de permitir Model Binding de javascript?

Por exemplo, queremos vincular a um objeto Person durante uma chamada ajax para ... (A classe Person é criado a partir o Entity Framework)

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

Se o Person tinha um objeto Pet que era uma chave estrangeira no db, você não pode passar o objeto Pet juntamente com os outros dados da chamada ajax. Então, a menos que o Pet é anulável no DB, a ligação a Person não iria funcionar.

Então, o que eu quero saber é ..., a fim de fazer Model Binding, deve / pode I nulo os campos db não posso passar de javascript? Ou eu tenho de fazer uma personalizado modelo Binder e se ligam a uma versão "mais plana" do objeto, a fim de seguir as melhores práticas? exemplo de versão mais plana do objeto:

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

A razão que eu peço é porque muito do meu Entity Framework criado classes contêm chaves estrangeiras, o que significa que vai precisar para criar uma duplicata plana de quase todas as classes, e parece ir contra toda a DRY diretor.

Foi útil?

Solução

Eu li sobre o que você ligada e postou, eu realmente não posso pensar em uma solução boa em cima da minha cabeça, mas todo o conceito de mudar o seu banco de dados subjacente para o bem de AJAX faz-me desconfortável. Eu sei que não é uma grande resposta, eu estou lutando com vários problemas de design EF agora mesmo, e tem havido várias vezes quando eu estive tentado a modificar o banco de dados por causa do modelo, mas fazer isso sempre vem volta a morder-me no passado.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top