Impossible de convertir l'objet de type 'System.Les données.De l'entité.L'Infrastructure.DbQuery`1[]' utilisation de linq expression lambda
je suis nouveau sur mvc et en essayant de se faire une idée de ce que je fais de mal, j'ai créer un Dbcontaxt
classe
public class DataBaseContext : DbContext
{
public DataBaseContext()
: base("DefaultConnection")
{
}
public DbSet<Membership> Membership { get; set; }
public DbSet<OAuthMembership> OAuthMembership { get; set; }
public DbSet<Role> Roles { get; set; }
public DbSet<UserProfile> UserProfiles { get; set; }
public DbSet<Category> Categorys { get; set; }
public DbSet<SubCategory> SubCategorys { get; set; }
public DbSet<Product> Products { get; set; }
public DbSet<Color> Colors { get; set; }
public DbSet<Size> Sizes { get; set; }
public DbSet<Company> Companys { get; set; }
public DbSet<UsersInRoles> UsersInRoles { get; set; }
}
}
et j'ai créer une classe de modèle pour créer un fortement afficher le type de
[Bind(Exclude = "AddUserToRoleID")]
public class AddUserToRole
{
[ScaffoldColumn(false)]
public int AddUserToRoleID { get; set; }
[Required]
[Display(Name = "User name")]
public string UserName { get; set; }
[Required]
[Display(Name = "Role name")]
public string RoleName { get; set; }
}
}
dans le contrôleur, je suis en train de créer la vue de détail par l'ajout d'afficher et de sélectionner AddUserToRole
que mon modèle pour la fortement afficher le type de
public ActionResult Details(int id = 0)
{
var UserInRole = db.UserProfiles
.Join(db.UsersInRoles,
u => u.UserId,
uir => uir.UserId,
(u, uir) => new {u = u,uir = uir})
.Join(db.Roles,
temp0 => temp0.uir.RoleId,
r => r.RoleId,
(temp0, r) => new { temp0 = temp0,r = r })
.Where(temp1 => (temp1.temp0.u.UserId == id))
.Select(temp1 => new AddUserToRole {
AddUserToRoleID = temp1.temp0.u.UserId,
UserName = temp1.temp0.u.UserName,
RoleName = temp1.r.RoleName
});
return View(UserInRole);
}
me donne cette erreur
The model item passed into the dictionary is of type
'System.Data.Entity.Infrastructure.DbQuery`1[SeniorProject.Models.AddUserToRole]', but
this dictionary requires a model item of type 'SeniorProject.Models.AddUserToRole'.
et quand je lance return View((UsersInRoles)UserInRole);
me donne cette erreur
Unable to cast object of type
'System.Data.Entity.Infrastructure.DbQuery`1[SeniorProject.Models.AddUserToRole]'
to type'SeniorProject.Models.UsersInRoles'.
et la vue
@model SeniorProject.Models.AddUserToRole
@{
ViewBag.Title = "Details";
}
<h2>Details</h2>
<fieldset>
<legend>AddUserToRole</legend>
<div class="display-label">
@Html.DisplayNameFor(model => model.UserName)
</div>
<div class="display-field">
@Html.DisplayFor(model => model.UserName)
</div>
<div class="display-label">
@Html.DisplayNameFor(model => model.RoleName)
</div>
<div class="display-field">
@Html.DisplayFor(model => model.RoleName)
</div>
</fieldset>
<p>
@Html.ActionLink("Edit", "Edit", new { id=Model.AddUserToRoleID }) |
@Html.ActionLink("Back to List", "Index")
</p>
que dois-je faire dans ce cas?
OriginalL'auteur Fadi | 2014-04-07
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin de la concrétiser. Mettre FirstOrDefault() à la fin de la requête
Edit: à la Suite de pjotr commentaire remplacement FirstOrDefault() avec SingleOrDefault()
FirstOrDefault()
méthode de le faire pour voir ce que ce qui s'est passé merci encorebien noté l'erreur, j'ai raté ça...:) 1up de moi
Dans ce cas, SingleOrDefault serait plus approprié
A travaillé pour moi aussi.
OriginalL'auteur user3411327