私は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();
}
'UserRole.Id'は'タイプのないint' 'Role'を返しています。 – abdul
あなたは何を意味するのかを定義できますか、私は完全に理解していません。 多分私に例を挙げてください:) –
パブリック仮想ロールの代わりにUserRole {get;セット; }、これは何かのような意味ですか、public int UserRole_Id {get;セット; } –