Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> CodeFirst. Связь один к одному, CodeFirst. Связь один к одному 
V
    Опции темы
FMA
Дата 18.10.2015, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 30.4.2008

Репутация: нет
Всего: нет



Добрый день.
Есть готовая база данных. Необходимо к ней сделать Web-приложение на ASP.NET MVC. Подключаю базу в режиме CodeFirst, но никак не получается связать две таблицы имеющие связь Один-к-одному.
Таблицы следующие
Код

CREATE TABLE USERS (
    ID_U                INTEGER NOT NULL,
    ID_EMPLOYEE         INTEGER,
    PW                  VARCHAR(250) DEFAULT ''
);
ALTER TABLE USERS ADD CONSTRAINT PK_USERS PRIMARY KEY (ID_U);
ALTER TABLE USERS ADD CONSTRAINT FK_USERS_1 FOREIGN KEY (ID_EMPLOYEE) REFERENCES EMPLOYEE (ID_EM) ON DELETE CASCADE;

CREATE TABLE EMPLOYEE (
    ID_EM        SMALLINT NOT NULL,
    LAST_NAME    VARCHAR(50) DEFAULT '',
    FIRST_NAME   VARCHAR(50) DEFAULT '',
    MIDDLE_NAME  VARCHAR(50) DEFAULT '',
);
ALTER TABLE EMPLOYEE ADD PRIMARY KEY (ID_EM);


Создаю следующие классы:
Код

    [Table("USERS")]
    public class User
    {
        [Key]
        [Column("ID_U")]
        public int Id { get; set; }

        [Column("PW")]
        [StringLength(250)]
        public string Password { get; set; }

        [Column("ID_EMPLOYEE")]
        public int EmployeeId { get; set; }

        public Employee Employee { get; set; }
    }

    [Table("EMPLOYEE")]
    public class Employee
    {
        [Key]
        [Column("ID_EM")]        
        public int EmployeeId { get; set; }

        [Column("LAST_NAME")]
        [StringLength(250)]
        public string LastName { get; set; }

        [Column("FIRST_NAME")]
        [StringLength(250)]
        public string FirstName { get; set; }

        [Column("MIDDLE_NAME")]
        [StringLength(250)]
        public string MiddleName { get; set; }
    }


В DbContext прописываю
Код

        public DbSet<User> Users { get; set; }
        public DbSet<Employee> Employees { get; set; }


В контроллере код
Код

        private DataBaseContext db = new DataBaseContext();

        public ActionResult Index()
        {
            foreach (User us in db.Users)
            {
                ViewBag.Message = us.Employee.FirstName;
            }

            return View();
        }


При считывании данных в классе User свойство Employee всегда null. 
Не пойму как правильно прописать связи, чтобы в User.Employee были данные.
Надеюсь на вашу помощь и советы.

Это сообщение отредактировал(а) FMA - 18.10.2015, 20:11
PM MAIL   Вверх
FMA
Дата 19.10.2015, 20:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 30.4.2008

Репутация: нет
Всего: нет



Решил задачу.
Код

        [Column("ID_EMPLOYEE")]
        public int EmployeeId { get; set; }

        [ForeignKey("EmployeeId")]
        public virtual Employee Employee { get; set; }

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Любитель
Mymik
mr.DUDA

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Любитель, Mymik, mr.DUDA.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка под ASP.NET | Следующая тема »


 




[ Время генерации скрипта: 0.1357 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.