Код CTP Entity Framework Наименование первого столбца и отношения - PullRequest
0 голосов
/ 13 декабря 2010

Я только начал смотреть на первые биты нового кода Entity Framework CTP5.

У меня есть следующие очень простые сущности.

User
 int Id;
 Account Account;

Account
 int Id;
 User AccountOwner;
 ICollection<User> Users;

Итак, учетные записи имеют владельца (пользователя) и могут иметь много пользователей. Эти отношения преобразуются в таблицу Accounts и таблицу Users в БД.

В таблице Users я получаю два столбца, AccountId и AccountId1, есть ли способ управления сгенерированными именами для этих столбцов. Кроме того, я действительно ожидал, что для свойства AccountOwner в таблице Accounts будет столбец UserId, но, похоже, что ссылка на таблицу Users. Было бы очень приятно НЕ иметь AccountId...n для всех ключей:)

1 Ответ

2 голосов
/ 13 декабря 2010

Здесь происходит несколько вещей.

В случае, когда пользователь и учетная запись имеют отношения 1: 1 друг с другом, он выбирает сторону, которая вам не нужна.У него нет возможности узнать, на какую сторону его надеть, без вашего ведома, чтобы вы могли сказать это либо с помощью свободного API, либо с помощью атрибута.Скорее всего, вы захотите сделать одну сторону необязательной, а другую - обязательной, чтобы заставить FK перейти на другую сторону, например,

User
...
[Optional]
Account Account;

Account
...
[Required]
User AccountOwner;

В качестве альтернативы вы можете использовать свободный API:

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

Есливы следуете intellisense на том, что вы также можете использовать свойство ограничений для подключения свойств FK.

Чтобы переименовать свойства FK, если они все еще не те, что вам нравятся, используйте атрибут Column, например,

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

Или снова с помощью API:

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