2013-05-16 6 views
0

У меня есть два объекта. Пользователь и UserContacts.Создание первой базы данных базы данных

Я создал два класса. Пользователь

public class PUser 
{ 
    public int PUserId { get; set; } 

    public virtual UserContact UserContact { get; set; } 
} 

public class UserContact 
{ 
    public int UserContactId { get; set; } 

    public virtual PUser PUser { get; set; } 
} 

I может иметь несколько контактов пользователей, но, на мой взгляд MVC - Я хочу добавить только один контакт пользователя.

Как я могу это сделать? Выше создаются таблицы, но не вставляются Puserid в контактную таблицу пользователя.

Fluent api б/у есть.

modelBuilder.Entity<PUser>() 
       .HasOptional(p => p.UserContact).WithRequired(p => p.PUser); 
+0

Можете ли вы уточнить, в чем проблема? Ваш основной ключ отсутствует во вставке? –

+0

Да, когда я ввожу. Он вставляет пользовательские контакты, но userid имеет значение null. –

+0

Показать код, который вставляет данные. –

ответ

1

Это one-to-one отношения, так что вы должны инициализировать UserContact при создании User. Вот как я это сделаю.

[HttpGet] 
    public ActionResult Create() 
    { 
     return View(); 
    } 

    [HttpPost] 
    public ActionResult Create(PUser model)//You should use a ViewModel here 
    { 
     if (ModelState.IsValid) 
     { 
      var db = new EfDb(); // If you introduce abstration to you Context, you could avoid this.    
      var user= new PUser 
          { 
           Name = model.Name,            
           UserContact= new UserContact 
                { 
                 Phone = model.UserContact.Phone    
                } 
           }; 

      db.PUser.Add(user); 
      db.SaveChanges(); 
      return RedirectToAction("Index", "Home"); 
     }       
     return View(model); 
    } 
Смежные вопросы