4
저는 mvc에 익숙하지 않고 무엇을 잘못하고 있는지 아이디어를 얻으려는 시도가 Dbcontaxt
클래스linq 람다 식을 사용하여 'System.Data.Entity.Infrastructure.DbQuery`1 []'유형의 객체를 캐스팅 할 수 없습니다.
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; }
}
}
이와 내가보기를 추가하여 세부 사항보기를 만들고 내 모델로 AddUserToRole
을 선택하기 위해 노력하고있어 컨트롤러에 강력하게 입력보기
[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; }
}
}
을 만들기 위해 모델 클래스를 생성 강력한 유형보기
,210public 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);
}
그것은 나에게이 오류
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'.
를주고 내가 return View((UsersInRoles)UserInRole);
캐스팅 할 때 나에게이 오류
Unable to cast object of type
'System.Data.Entity.Infrastructure.DbQuery`1[SeniorProject.Models.AddUserToRole]'
to type'SeniorProject.Models.UsersInRoles'.
및
@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>
내가 무엇을해야보기를 제공 이 경우?
감사는 내가 무엇을 읽을 대답을 찾고 내가 너무 많은 시간을 가지고 작업을 릴레이로 FirstOrDefault()를 대체 표트르의 의견에 따라 'FirstOrDefault()'메쏘드는 어떤 일이 다시 일어 났는지 알아보기 위해 – Fadi
실수를 잘 지적했다. 나는 그것을 놓쳤다. :) 1up from me –
이 경우 SingleOrDefault가 더 적절할 것이다. – voidengine