nicht umwandeln Ich habe ein GridView mit der EntityDataSource verbunden.Kann Objekt vom Typ 'System.Data.Objects.MaterializedDataRecord'
EntityDataSource hat einen internen Parameter für Where Parameters. Alles funktioniert gut bis zu diesem Punkt.
<asp:EntityDataSource ID="EntityDataSourceListAuthors" runat="server" ConnectionString="name=CmsConnectionStringEntityDataModel"
DefaultContainerName="CmsConnectionStringEntityDataModel" EnableFlattening="False"
EntitySetName="CmsAuthors" EntityTypeFilter="" OrderBy="it.FirstName" Select="it.AuthorId, it.UserId, it.FirstName, it.LastName, it.NoteInternal, it.ContentAuthor"
Where="it.UserId = @ActiveUser">
</asp:EntityDataSource>
Ich verwende ein Ereignis ein Entity Framework RowDataBound einen Wert für jede einzelne Zeile abzurufen und einige Logik auszuführen.
Sobald ich den Code ausführen erhalte ich diesen Fehler:
Unable to cast object of type 'System.Data.Objects.MaterializedDataRecord' to type 'WebProject.DataAccess.DatabaseModels.CmsAuthor'.
Es scheint mir, als Parameter zu EntityDataSource smt Zugabe verändert sich so in der Lage bin ich nicht EF als Jede Idee vor zu benutzen? Danke Leute!
protected void uxListAuthorsDisplayer_RowDataBound(object sender, GridViewRowEventArgs e)
{
switch (e.Row.RowType)
{
// In case type of row is DataRow (a data row of GridView)
case DataControlRowType.DataRow:
// Display friendly User's Name instead of his Guid
// Retrive underlying data from a single row rappresented in GridView (use Entity Framwork)
WebProject.DataAccess.DatabaseModels.CmsAuthor myRow = (WebProject.DataAccess.DatabaseModels.CmsAuthor)e.Row.DataItem;
// Retrive the Guid for a User in a specific row
Guid myUserGuid = (Guid)myRow.UserId;
// Find out used UserName using Guid UserId
MembershipUser mySelectedUser = Membership.GetUser(myUserGuid);
// Write friendly User's Name instead of his Guid value in a specific Grid View Cell
e.Row.Cells[3].Text = mySelectedUser.UserName;
// Disable Delete Button if a Content has associated an Author
// Use Entity Framwork for retriving data - Create a "Context" for a single Row
using (CmsConnectionStringEntityDataModel context = new CmsConnectionStringEntityDataModel())
{
// Find out Row Id and create an varaible to store it
int myWorkingRowId = myRow.AuthorId;
// Find the Edit Link
HyperLink myEditLink = (HyperLink)e.Row.FindControl("uxLinkEditButton");
// Find the Delete Button
LinkButton myDeleteButton = (LinkButton)e.Row.FindControl("uxLinkDeleteButton");
// Find the System Note Label
Label mySystemNote = (Label)e.Row.FindControl("uxSystemNoteDisplayer");
// Use of Lamba Espression with EF to check if an Author is associated with a Content
CmsContent authorIdInContent = context.CmsContents.FirstOrDefault(x => x.AuthorId == myWorkingRowId);
// Make visible or invisible the Delete Button if an Author is associated to a Content
if (authorIdInContent != null)
{
myDeleteButton.Visible = false;
mySystemNote.Text = "Author is being used in Contents";
}
else
{
myDeleteButton.Visible = true;
}
// Programmatically Limiting Functionality depending on User's Roles
myEditLink.Visible = User.IsInRole("CMS-ADMINISTRATOR") || User.IsInRole("CMS-AUTHOR") || User.IsInRole("CMS-EDITOR");
myDeleteButton.Visible = User.IsInRole("CMS-ADMINISTRATOR");
}
break;
}
}
Wickeln Sie Ihren Code ist wirklich nicht lesbar. –
irgendeine Idee zu diesem Thema? – GibboK