2009-09-23 4 views
0

J'ai un problème lors de l'attribution d'une valeur à une entité qui a une référence. Je reçois l'intellisense et tout sauf une exception de référence nulle lorsque j'essaie de l'assigner à l'objet passé dans la fonction qui enregistre dans la base de données.Affectation d'une valeur à la colonne avec référence, à l'aide du cadre d'entité

 public ActionResult BookingViewEdit([Bind(Include = "BookingViewID,Enabled,ObjectLimit,RSSenabled")]BookingView bv, int selCustomers) 
    { 
     bv.Customers.CustomerID = selCustomers; 

     _bvs.SaveBookingView(bv); 

Que faut-il faire pour affecter la valeur à CustomerID? la clé FK est dans la table "BookingView", et si je viens de frapper "bv". il n'y a pas de CustomerID ici.

Merci à l'avance

/M

+0

L'objet BookingView que vous attribuez à un nouveau ou a-t-il déjà été conservé dans la base de données au moins une fois? La relation entre BookingView et le client est-elle une vue de la réservation pour de nombreux clients ou quoi? Fournir les bases du modèle de données semble être utile ici (les clés étrangères sont-elles nulles, etc.). –

+0

Ils ne sont pas Nullable, chaque "BookingView" doit avoir un "CustomerID", non-nullable FK –

Répondre

1

est "clients" en fait un seul client, pas une liste?

Dans ce cas, vous pourriez faire quelque chose comme:

bv.CustomerReference.EntityKey = new EntityKey("MyEntities.Customers", "CustomerId", selCustomers); 

De toute évidence, remplacer « MyEntities.Customers » avec les noms ensemble du contexte de l'entité réelle et de l'entité.

Je vais ajouter que c'est extrêmement confusion d'utiliser plusieurs noms d'argument/propriété pour les objets simples.

+0

Dans mon diagramme d'entités, il n'y a pas de pluriels. Donc la classe est appelée Client –

+0

La classe doit être Client (comme vous l'avez). Le nom de l'ensemble d'entités doit être Customers. L'argument selCustomers doit être selCustomer (ou mieux, selon les règles FxCop, selectedCustomer). bv.Customers devrait être bv.Customer –

Questions connexes