2010-12-13 61 views
0

Je viens de commencer à examiner les nouveaux bits du code Entity Framework CTP5.Entity Framework CTP Code Nom et relations de la première colonne

J'ai les entités très simples suivantes. Par conséquent, les comptes ont un propriétaire (utilisateur) et peuvent avoir plusieurs utilisateurs. Ces relations sont converties en une table Accounts et une table Users dans la base de données.

Dans la table Utilisateurs, j'obtiens deux colonnes, AccountId et AccountId1, existe-t-il un moyen de contrôler les noms générés pour ces colonnes. Aussi je m'attendrais réellement à ce qu'il y ait une colonne UserId pour la propriété AccountOwner sur la table Accounts, mais il semble que la référence soit sur la table Users à la place. Ce serait vraiment bien de ne pas avoir le AccountId...n pour toutes les clés :)

+0

pourquoi ne l'utilisateur spécifique ont plusieurs comptes? –

Répondre

2

Il y a quelques choses qui se passent ici.

Dans le cas d'un utilisateur et d'un compte ayant des relations 1: 1, choisissez le côté que vous ne voulez pas. Il n'y a aucun moyen de savoir de quel côté le mettre sans que vous le disiez, donc vous pouvez le dire soit avec l'API fluide, soit avec un attribut. Il est probable que vous souhaitiez rendre un côté facultatif et un autre obligatoire, ce qui forcera le FK de l'autre côté, par ex.

User 
... 
[Optional] 
Account Account; 

Account 
... 
[Required] 
User AccountOwner; 

Vous pouvez également utiliser l'API couramment:

config.Entity<User>().HasOptional(u => u.Account).WithRequired(a => a.AccountOwner) 

Si vous suivez IntelliSense sur que vous pouvez également utiliser la propriété contrainte pour câbler les propriétés FK aussi.

Pour renommer les propriétés FK si elles ne vous plaisent toujours pas, utilisez l'attribut Colonne, par exemple.

User 
[Column(Name="Id")] 
int Id; 

Ou encore avec l'API couramment:

config.Entity<User>().Property(u => u.Id).HasColumnName("Id");