2016-11-20 5 views
-1

私はASP.NET MVCとEntity FrameworkでWebアプリケーションを開発しようとしていますが、私のデータベースには2つの関連するテーブルがありますユーザーとロール。ASP MVCとエンティティフレームワークは、外部キーを正しい方法で挿入する必要があります

私のアプリケーションでは、リポジトリパターンを使用して、私は新しいユーザーを追加することができますし、これらの新しいユーザーに役割を解析しようとしています。しかし、残念ながら私はそれを働かせることはできません。

私はVSから次のエラーメッセージが表示されますが、この問題を解決する方法はわかりません。

'project.Models.Database.Role'

モデルクラスに型 'int型' を変換できません:

public class User 
{ 
    [Key] 
    public int Id { get; set; } 

    public string UserMail { get; set; } 
    public string UserPassword { get; set; } 

    public virtual Role UserRole { get; set; } 


} 

public class Role 
{ 
    public int Id { get; set; } 
    public string RoleName { get; set; } 
    private List<User> users; 

    public Role() 
    { 
     users = new List<User>(); 
    } 

    public virtual ICollection<User> user { get; set; } 


} 

のViewModel

public class UserProfileViewModel 
{ 
    //user 
    [Required] 
    [DisplayName("e-mail")] 
    public string UserMail { get; set; } 
    [Required] 
    [DataType(DataType.Password)] 
    [DisplayName("adgangskode")] 
    public string UserPassword { get; set; } 

    public virtual Role UserRole { get; set; } 


    [Required] 
    [DisplayName("navn")] 
    public string Name { get; set; } 
    [Required] 
    [DisplayName("telefonnummer")] 
    public int Phone { get; set; } 



} 

コントローラ、私は、解析しようとしていますロールを作成すると、ユーザーが作成されます。

[ValidateInput(false)] 
    [HttpPost] 
    public ActionResult CreateClub(UserProfileViewModel viewModel, string role) 
    { 

     role = string.Empty; 
     Role roles = db.Roles.SingleOrDefault(x => x.RoleName == "club"); 
     role = roles.Id.ToString(); 
     ViewBag.Test = role; 

     try 
     { 
      if (ModelState.IsValid) 
      { 

       _repository.CreateClub(viewModel, role); 
       ViewBag.Succes = "Klub oprettet"; 
      } 


     } 

     catch (Exception ex) 
     { 

      ModelState.AddModelError("", ex); 
      ViewData["CreateError"] = "Unable to create; view innerexception"; 
     } 


     return View(); 
    } 

インタフェース

public interface IClubRepository 
{ 


    void CreateClub(UserProfileViewModel viewMode , string role); 

} 

リポジトリ

public void CreateClub(UserProfileViewModel viewModel, string role) // <- it wont parse a role 
    { 
     var user = new User() 
     { 


      UserMail = viewModel.UserMail, 
      UserPassword = viewModel.UserPassword, 
      UserRole = viewModel.UserRole.Id //<- Error comes here 

     }; 

     var profile = new Profile() 
     { 
      Name = viewModel.Name, 
      Phone = viewModel.Phone 
     }; 

     user.profile = profile; 


     db.Users.Add(user); 
     db.Profiles.Add(profile); 
     db.SaveChanges(); 

    } 
+0

'UserRole.Id'は'タイプのないint' 'Role'を返しています。 – abdul

+0

あなたは何を意味するのかを定義できますか、私は完全に理解していません。 多分私に例を挙げてください:) –

+0

パブリック仮想ロールの代わりにUserRole {get;セット; }、これは何かのような意味ですか、public int UserRole_Id {get;セット; } –

答えて

0

は、この行は、UserRole.Idのint型の原因を返します。あなたが好きなものに変更する必要がある

UserRole = viewModel.UserRole.Id //<- Error comes here 

:あなたはUserProfileViewModelで定義されているよう

UserRole = viewModel.UserRole 
関連する問題